2015-10-01 5 views
52

Ho un metodo semplice che alla fine di esso voglio reindirizzare ad un altro componente:reindirizzamento all'interno componente angolare 2

export class AddDisplay{ 
    display: any; 

    addPairTo(name: string, pairTo: string){ 
    this.display = {}; 
    this.display.name = name; 
    this.display.pairTo = pairTo; 

    } 
} 

quello che voglio fare è alla fine del metodo reindirizzare ad un altro componente:

export class AddDisplay{ 
    display: any; 

    addPairTo(name: string, pairTo: string){ 
    this.display = {}; 
    this.display.name = name; 
    this.display.pairTo = pairTo; 

    this.redirectTo('foo'); 
    } 
} 

Come ottengo ciò in Angular 2?

+0

Posso solo pensare al routing. Puoi farlo con [navigate] (https://angular.io/docs/js/latest/api/router/Router-class.html) –

risposta

69

prima configurare il routing

import {RouteConfig, Router, ROUTER_DIRECTIVES} from 'angular2/router'; 

e

@RouteConfig([ 
    { path: '/addDisplay', component: AddDisplay, as: 'addDisplay' }, 
    { path: '/<secondComponent>', component: '<secondComponentName>', as: 'secondComponentAs' }, 
]) 

poi nel componente di importazione e poi iniettare Router

import {Router} from 'angular2/router' 

export class AddDisplay { 
    constructor(private router: Router) 
} 

l'ultima cosa che dovete fare è chiamare

this.router.navigateByUrl('<pathDefinedInRouteConfig>'); 

o

this.router.navigate(['<aliasInRouteConfig>']); 
+2

Nella versione beta dovrai fare riferimento al nome anziché al percorso come così: '{percorso: '/ utente', componente: UserRoute, come: 'Utente'}' e così 'this.router.navigate (['./ Utente']);' –

+0

FYI: 'navigateByUrl' non accetta un array. Solo una singola corda. –

+0

yeap, hai ragione. Grazie! – kit

5

@ risposta di kit è a posto, ma ricordate di aggiungere ROUTER_PROVIDERS ai fornitori nel componente. Quindi è possibile reindirizzare a un'altra pagina nel metodo ngOnInit:

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']); 
    } 

} 
+19

Nota: questa risposta risolve una versione beta o release candidate di Angular 2 e non è più applicabile per Angular 2 final. – jbandi