2017-01-17 1 views
4

Angular2 CustomReuseStrategyクラスを使用してコンポーネントインスタンスを保存しています。 最初にコンポーネントにルーティングすると、新しいインスタンスが作成されます。これは期待どおりに動作します。しかし、新しいパラメータで同じコンポーネントにルーティングすると、そのコンポーネントの新しいインスタンスが作成され、onInit関数が再度実行されます。私はコンポーネントが同じインスタンスを使用したいが、URLパラメータを更新したい。何か案は?私はこの1つに固執しています。Angular2 CustomReuseStrategyは、パラメータを使用してルーティングするときにコンポーネントの新しいインスタンスを作成します。

ここに私のルートがあります。

{ path: 'tiles', component: DisplayTileData }, 
{ path: 'tiles/:master/:filters', canActivate: [AuthGuard], component: DisplayTileData } 

これらのルートにナビゲートする方法は次のとおりです。

addNewMasterPath(newMasterVariable) { 
    this.master = this.master + '-' + newMasterVariable; 
    var newMap = this.variable.map(items => { return items}).join('-'); 
    this.router.navigate(['tiles', this.master, newMap]); 
} 

onSelectAddNewParameter(newParameter) { 
    this.variable.push(newParameter); 
    var newMap = this.variable.map(items => { return items}).join('-'); 
    this.router.navigateByUrl('/tiles/this.master/newMap'); 
} 

私がrouter.navigateまたはrouter.navigateByUrlを使用するかどうかは、動作が同じであることを明確にしてください。ここでは、ソースコードに基づいて

+0

カスタム再利用戦略コード – kemsky

+0

役立つかどうかわかりませんが、urlTreeを作成しようとしましたか?var urlTree = this.router.createUrlTree(["tiles"、this.master、newMap]) ; this.router.navigateByUrl(urlTree); '? – John

+0

http://stackoverflow.com/questions/41686036/angular-2-route-with-parameters-re-initializing-component-oninitから重複していますか? – Bertofer

答えて

関連する問題