2017-09-10 9 views
0

私は、これらのルートは子ルートのparam変更をサブスクライブするにはどうすればいいですか?

const routes: Routes = [ 
    { path: 'home', component: HomeComponent }, 
    { 
    path: 'explore', 
    component: ExploreComponent, 
    children: [ 
     { path: '', component: ProductListComponent }, 
     { path: ':categorySlug', component: ProductListComponent } 
    ] 
    } 
]; 

これにより、ユーザは

/explore(なしカテゴリ)

または

/explore/computers(カテゴリcomputers)から

に行くことができることを意味してい親(ExploreComponent)、私は欲しいo categorySlug param変更を購読して、もちろんイベントを処理できます。これどうやってするの?

EDIT:

this.activatedRoute.firstChild.params.subscribe(console.log);

をそして、それは私が欲しいものを正確に私を与えるが、私は(カテゴリなし)/exploreに行くたら、それは死ぬ:

私が使用してサブスクライブしてみました。それは/explore/:categorySlugリンクを使用してナビゲートする場合にのみ機能します。

答えて

0

あなたのコンポーネントのparamsを購読することができます。

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

constructor(private route: ActivatedRoute) {} 
ngOnInit() { 
    this.route.params.subscribe(params => { 
      this.categorySlug= params['categorySlug ']; 
     }); 

    // do something with this.categorySlug 
} 

サイドノート:は、一般的にはあなたのWebアプリでマスター・ディテール構造の種類を使用するので、最初のパスがマスターになり、もう1つは、細部に行く、それぞれが添え、このような異なるコンポーネントですが、両方のコンポーネントに同じコンポーネントを使用する場合や、そのようなマスターディテール関係がない場合は、パラメータがnullかどうかを確認する必要があります。

+0

はい、NULLかどうか確認しています。 –

+0

これは1回だけ印刷されます。 –

+0

@FeloVilches一度はどういう意味ですか?あなたはその状況についてもっと説明できますか? – mok

関連する問題