2016-09-16 5 views
8

私は.routing.tsでこれを持っているが Angular2ルータ2.0.0では、同じURLに異なるパラメータが読み込まれたときにコンポーネントが再読み込みされませんか?

export const routing = RouterModule.forChild([ 
{ 
    path: 'page/:id', 
    component: PageComponent 
}]); 
を提出マイ PageComponentファイルには、idパラメータをチェックし、それに応じてデータをロードします。以前のバージョンのルータでは、/ page/4から/ page/25に移動した場合、ページは「リロード」され、コンポーネントは更新されます。

ここで、XがIDである/ page/Xに移動しようとすると、最初にロードされるのは初めてですが、URLは変更されますが、コンポーネントは再び「再読み込み」されません。

コンポーネントを強制的にリロードするために渡す必要があるものがありますか?ngOnInitイベントを呼び出しますか?

答えて

15

更新2

この回答はずっと前に廃止され、ルータのバージョン用です。

現在のルータで行う方法については、https://angular.io/api/router/RouteReuseStrategyを参照してください。

カスタム再利用戦略を提供することを可能にするhttps://github.com/angular/angular/pull/13124によって新しいルータ用(2.3角度)今固定のUpdate 1

。例えば

https://www.softwarearchitekt.at/post/2016/12/02/sticky-routes-in-angular-2-3-with-routereusestrategy.aspx

既知の問題です

https://github.com/angular/angular/issues/9811

参照してください。 現在、ルータがパラメータのみのルート変更でコンポーネントを再作成する方法はありません。

最終的には、いくつかの再利用戦略を実装する計画について話し合った。

あなたは

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

仮定する以下のようなのparamをサブスクライブする必要があり、角度2と4 の両方のためのこのコードの作業をのparamsの変更をサブスクライブし、ngOnInit()

+1

ありがとうございます、パラメータを購読すると、完璧に動作します – Gillardo

+2

私はANGULAR 4で同じ問題に直面しています。この問題の解決策はありますか? – pushp

+0

警備員はこれに対して何をしなければなりませんか? – MgSam

-1

であり、あなたのコードを実行する代わりにすることができますあなたのページはまだリロードされず、ngOnDestroyを使用して値を取り消します。

ngOnDestroy() 
{ 
this.selected_id.unsubscribe(); 
} 

これは前回のparam値は私のために働いて、論理上の

明らかであろう。それがあなたに役立つことを願っています。

関連する問題