2016-12-23 9 views
1

今、私は一種のウェブショップを作っています。私のホームページには、カテゴリのドロップダウンがあります。親の猫Aと子猫BとCAngular2:経路のパラメータが変更されたときのメソッド/ ngoninitを呼び出す

Cat A、BおよびCはすべて1成分CatAComponentで表されます。私が最初にこれらの猫の一匹で行ったときに、私の父親が呼ばれ、ページに表示する必要があるものが表示されます。

私は別のサブ猫をクリックしたいとき、私はまだ同じコンポーネントにありますが、ルートのパラメータだけが変更されます(例えば、私はlocalhost:123/CatA/CatBにいました。 :123/CatA/CatC、パラメータのみが変更され、ngOnInitは呼び出されず、更新メソッドも呼び出されません)。

これを回避する方法はありますか?メソッドを参照するためにビューファイルに(クリック)メソッドを配置することはできません。カテゴリのメニューは別のビューコンポーネントにあります。

パラメータのみが変更されたときにNgOnInitを呼び出すことはできますか?

答えて

13

あなたは次のようにActivatedRouteサービスに加入する必要があります。

//コンポーネント

import { Component, OnInit } from '@angular/core'; 
import { ActivatedRoute, Params } from '@angular/router'; 

export class YourComponent { 
    constructor(
    private route: ActivatedRoute  
) {} 

    ngOnInit(): void { 
    this.route.params.subscribe((params: Params) => { 
     console.log(params); 
     // this will be called every time route changes 
     // so you can perform your functionality here 

    }); 
    } 
} 
+0

私は愚かです。私はparamsを購読していましたが、代わりに代わりに私の更新メソッドを置いてください。お返事ありがとうございました – TanguyB

+0

この回答は経路全体ではなく、パラメータを扱っています。ルートについては、こちらへhttps://stackoverflow.com/questions/42453375/how-to-call-a-function-on-every-rotute-change-in-angular2 – SKG

関連する問題