2015-10-01 20 views
52

Ich habe eine einfache Methode, die es am Ende ich an eine andere Komponente umleiten möchten:Redirect innerhalb Komponente Angular 2

export class AddDisplay{ 
    display: any; 

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

    } 
} 

Was ich tun will ist am Ende des Verfahrens auf eine andere Komponente umleiten:

export class AddDisplay{ 
    display: any; 

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

    this.redirectTo('foo'); 
    } 
} 

Wie erreiche ich dies in Angular 2?

+0

Ich kann nur an Routing denken. Du kannst das mit [navigate] tun (https://angular.io/docs/js/latest/api/router/Router-class.html) –

Antwort

69

erste configure Routing

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

und

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

dann in Ihrer Komponente importieren und dann Router

import {Router} from 'angular2/router' 

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

das letzte, was Sie tun müssen, um injizieren ist

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

oder

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

In der Beta musst du dich auf den Namen anstatt auf den Pfad beziehen Also: '{Pfad: '/ Benutzer', Komponente: UserRoute, wie: 'Benutzer'}' und so 'this.router.navigate (['./ User']);' –

+0

FYI: 'navigateByUrl' nicht Akzeptiere ein Array. Nur eine einzige Saite. –

+0

yeap, du hast Recht. Vielen Dank! – kit

5

@ kit Antwort ist in Ordnung, aber nicht vergessen ROUTER_PROVIDERS an den Anbieter in der Komponente hinzuzufügen. Dann können Sie auf eine andere Seite innerhalb ngOnInit Methode umleiten:

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

Hinweis: Diese Antwort bezieht sich auf eine Beta oder eine Release-Version von Angular 2 und ist nicht mehr gültig für Angular 2 final. – jbandi

Verwandte Themen