このようなルーティング設定があります
{
path: '',
component: BaseCmp,
children: [
{ path: 'list', component: ListCmp },
{
path: 'list/:itemId',
component: ListItemCmp,
},
{
path: 'list/:itemId/:subNavItemId',
component: ListItemCmp,
}
]
}
ListCmp から項目を選択し、たとえば「list/123」に移動します
ListCmp Constructor/OnInit では、:itemId を使用していくつかのデータをフェッチし、SubNavItems のリストを返します。そこから、最初の SubNavItem の ID をパラメーターとして追加する必要があります (routerLinkActive を強調表示したり、その他のフェッチ目的で)。
constructor(route:ActivatedRoute, http:HttpClient, router:Router){
let id = route.params.itemId
http.get(.../id).subscribe(list => {
// add id of first item of list to params
this.router.navigate(['list', id, list[0].id, {replaceUrl:true}]
})
}
これにより、現在の ListItemCmp が破棄され、新しい ListItemCmp がインスタンス化されます。どうすればそれを防ぐことができますか? location.go() メソッドを試しましたが、それは routerLinkActive をトリガーしません