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を使用するかどうかは、動作が同じであることを明確にしてください。ここでは、ソースコードに基づいて
カスタム再利用戦略コード – kemsky
役立つかどうかわかりませんが、urlTreeを作成しようとしましたか?var urlTree = this.router.createUrlTree(["tiles"、this.master、newMap]) ; this.router.navigateByUrl(urlTree); '? – John
http://stackoverflow.com/questions/41686036/angular-2-route-with-parameters-re-initializing-component-oninitから重複していますか? – Bertofer