2016-09-08 9 views
6
const APP_ROUTES: RouterConfig = [ 

    { 

     path: 'app/home', 
     component: HomeComponent, 
     data: { 
      name: 'Home' 
     } 

    } 


] 

上記のようにルート設定がある場合、その指示文からそのdataプロパティにアクセスするにはどうすればよいですか。 helloディレクティブでangular2のディレクティブからのルートデータへのアクセス

@Directive({ 
    name: 'hello' 
}) 

class HelloDirective { 
@Input('routerLink') link: string[]; 

ngOnInit() { 
    //HOW CAN I GET ROUTE AND ITS DATA FROM PATH/URL ??? 

    //const magicallyGrabbedRoute = pleaseGiveMeMyRouteFrom(this.link); 
    //const myData = magicallyGrabbedRoute.data; 

} 

} 

<a hello [routerLink]="['app/home']"> Go Home </a> 

は、どのように私はrouterLink属性の値のためのルート設定を得ることができますか?

+0

この@Lekhnathの解決策を考え出しましたか? – Spikeh

+0

@Spikeh悲しいことに、私はこれに対する解決策を見つけられませんでした。 – Lekhnath

答えて

1

ルートパラメータは、コンポーネントクラス内に配置することで登録できます。 &あなたはまた、ルートdefinationに渡されたデータを取得するためにthis.route.snapshot.dataを使用することができ、コンストラクタ

this.sub = this.route 
    .params //.data //--> use data to retrieve route data 
    .subscribe(params => { 
    console.log(params['id']); 
    }); 

private route: ActivatedRouteを持っています。

+0

この回答は私の問題を解決するために欠けています。どんなサービスに私はそれが私に経路/ routeConfiguration/routeDataを返すようにいくつかのリンクを提供すべきです。それは、現在の/活動化されたルートだけでなく、どんなリンクでもあり得る。 – Lekhnath

+0

'RouteData'は' @ angle/router @ 3.0.0-beta.2'にありません。 – Lekhnath

+1

'params'を' data'に変更する必要があります – mrgoos

5

RC6は):

次に

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

あなたのコンストラクタで:あなたは、インポートする必要があり

constructor(private route: ActivatedRoute) { }

クラスべきimplements OnInitこの方法:

ngOnInit() { const myData = this.route.snapshot.data['name']; }

あなたのURLが動的でない場合です。動的な場合は、スナップショットではなくオブザーバを使用する必要があります。 p.s.親の両親のためだけに:this.route.snapshot.parent.data['name']

+0

これは有効なルートデータにアクセスするために使用できますが、一部のルートコンポーネントから有効なルートのデータを取得しようとしていません。代わりに、['app/home']というリンクからルートデータを取得しようとしています。 – Lekhnath

+0

さて、もしそれが親のものであれば、 'this.route.snapshot.parent.data ['name']'を示唆したように使うことができます。そうでない場合は、https://angular.io/docs/ts/latest/cookbook/component-communication.htmlで提案されている他のコンポーネント通信を使用できます。最高のサービスIMOを介している可能性があります。 – mrgoos

+2

私の 'ngOnInit'ルートメソッドを見て、' routerLink'属性値を取得しようとしていて、その値に基づいてリンク/パスをマップするルート設定のエイリアスが必要です。 – Lekhnath

関連する問題