2016-05-16 37 views
8

Come creare un semplice reindirizzamento facendo clic su un pulsante in Angular 2? Già provato:Angolare 2 reindirizzamento al clic

import {Component, OnInit} from 'angular2/core'; 
import {Router, ROUTER_PROVIDERS} from 'angular2/router' 

@Component({ 
    selector: 'loginForm', 
    templateUrl: 'login.html', 
    providers: [ROUTER_PROVIDERS] 
}) 

export class LoginComponent implements OnInit { 

    constructor(private router: Router) { } 

    ngOnInit() { 
     this.router.navigate(['./SomewhereElse']); 
    } 

} 

risposta

20

Si potrebbe sfruttare il supporto caso di Angular2:

@Component({ 
    selector: 'loginForm', 
    template: ` 
    <div (click)="redirect()">Redirect</div> 
    `, 
    providers: [ROUTER_PROVIDERS] 
}) 
export class LoginComponent implements OnInit { 
    constructor(private router: Router) { } 

    redirect() { 
    this.router.navigate(['./SomewhereElse']); 
    } 
} 
+0

non funziona. Ho ECCEZIONE: Errore: Uncaught (promesso): Impossibile trovare l'uscita predefinita – TeodorKolev

+1

Puoi fornire il contenuto del modello in cui definisci i percorsi (contenente lo spazio 'SomewhereElse')? Dovresti avere un 'router-outlet' in esso ... –

+0

Sì ce l'ho dentro. È all'interno di app.component.ts. @Component ({ selettore: 'my-app', modello: '

', direttive: [ROUTER_DIRECTIVES] }) – TeodorKolev

9

direi uso routerLink direttiva & posto che oltre a (ancora) tag

<a [routerLink]="['./SomewhereElse']">Redirect</a> 

Inoltre è necessario rimuovereda providers & inclu de nella dipendenza bootstrap e quindi aggiungere ROUTER_DIRECTIVES in opzione direttive del componente per utilizzare la direttiva su HTML. Assicurarsi che RouterModule con il suo percorso sia stato iniettato nel modulo dell'app principale.

+0

È possibile visualizzare il codice di lavoro? – TeodorKolev

+0

@TeodorKolev guarda [questo plunkr] (http://plnkr.co/edit/PMkIbCWJAAlxLBYgDcTG?p=preview) L'ho preso da angular.io, che ha molti link creati usando 'routerLink' –

+0

Questa soluzione funziona per chiunque ? –

10

vorrei renderlo più dinamico metodo che utilizza parametri

Importare il router angolare

import { Router } from '@angular/router'; 

Creare un pulsante con evento Click

<div (click)="redirect(my-page)">My page</div> 

Creare un metodo con un parametro nome pagina

redirect(pagename: string) { 
    this.router.navigate(['/'+pagename]); 
} 

Quando si fa clic il router deve itinerario alla pagina corretta

1

Prova routerLink sulla modifica del tasto

<button type="button" [routerLink]="['/edit']">Edit</button> 

More Info

+0

risposta migliore !!! –