2016-03-20 7 views
4

私はAppComponentからCoursescomponentに変数を渡すためにRouteConfigを使いたいが、ルートconfigの "data"プロパティは定数パラメータを渡すだけで、 "this"は認識できない。これを行う方法はありますか?ルーテッドコンポーネントへの角度2のパス変数を親コンポーネントから渡すことはできますか?

もしそうでない場合は、ルーティングされたコンポーネントに変数を渡すのがベストプラクティスですか?

@Component({ 
    selector: 'app', 
    template: ` 
    <router-outlet></router-outlet> 
    `, 

directives: [ROUTER_DIRECTIVES], 
}) 

@RouteConfig([ 
    { path: '/courses' 
     , name: 'Courses' 
     ,component: CoursesComponent 
     ,data:{token:this.token}} // this doesn't work -- cannot read property "token" of undefined 

]) 

export class AppComponent { 
    token:string; 
//I would change the token(string) in this component, and I want to pass this to the routed components 

} 

答えて

0

共有サービスを使用してコンポーネント間で値を共有できます。

共有サービスを実装する方法の詳細は、Global Events in Angular 2を参照してください。

また、Routerを注入して、追加のデータを渡す機能の1つをrouter.navigateXxx()という名前で呼び出すこともできます。

1

私はコンストラクタで動的ルートを定義することでこれを実現しました。ここに例があります

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

@Component({ 
    selector: "app", 
    template: '<router-outlet></router-outlet>', 
    directives: [ROUTER_DIRECTIVES] 
}) 
export class AppCmp{ 
    public token:string; 
    constructor(private _router:Router){ 
    var config = []; 
    if(!this._router.registry.hasRoute("Courses",AppCmp)) 
     config.push({ path: '/courses', name: 'Courses',component: CoursesComponent,data:{token:this.token}); 

    this._router.config(config) 
    } 
} 
関連する問題