2016-11-06 11 views
0

私は以下のコードを持っています。oost(:slug)をクリックするとライトコンテンツが表示されますが、zuid(:slug)をクリックすると新しいコンテンツは表示されません。 どうすれば実現できますか?Typescript Angular 2 onchange urlはコンテンツを変更しません

経路:

{ path : ':slug' , name: 'Items' , component: DirectoryComponent}, 

DirectoryComponent:

ngOnInit() { 
    this.slug = this.activatedRoute.snapshot.params['slug']; 
    this.dataService.fetchData(this.slug) 
     .subscribe(
      (data) => { 
     ....... 
    } 
} 

のDataService:

fetchData(slug) { 
    if (slug == '') { 
     slug = 'home'; 
    } 
    return this.http.get(ConfigService.API_URL + 'items/' + slug) 
     .map(
      (res) => res.json() 
     ) 
     ; 
} 

回答:

コンストラクタ(パブリックactivatedRoute:ActivatedRoute、 民間のDataService:DataServiceの、 プライベートseoService:SeoService、 民間ルータ:ルータ){私が正しく理解していれば

this.activatedRoute.params.subscribe(
    params => { 
     this.dataService.fetchData(params['slug']) 
      .subscribe(
       (data) => { 
       ..... 

答えて

0

これは動作します:ライトのthats

constructor(public activatedRoute:ActivatedRoute, 
      private dataService:DataService, 
      private seoService:SeoService, 
      private router:Router) { 

    this.activatedRoute.params.subscribe(
     params => { 
      this.dataService.fetchData(params['slug']) 
       .subscribe(
        (data) => { 
        ..... 
0

は、あなたがその差パラメータを指定して、同じルート上に滞在しています。この場合Angularは新しいコンポーネントを作成しませんが、同じコンポーネントにとどまります。したがって、スナップショットは使用しないでください。アクティブなルートの監視可能なパラメータにサブスクライブし、新しいパラメータが発行されたときにデータを更新してください。

+0

はい。どのように私はそれを達成することができます – Bas

+0

activatedRoute.params.subscribe(params => ...) –

+0

私はあなたのスニペットにthis.activatedRoute.snapshot.params ['slug']を置き換えなければならないと動作しますか? – Bas

関連する問題