Angular 路由器:(类似 TAB)导航 - 如何在没有 运行 ngOnInit 的情况下再次更改 URL
Angular router: (TAB like) navigate - how to change URL without running ngOnInit again
好的,问题很简单,但自己好像找不到答案,所以请帮忙
我有这条路线(简化):
const routes: Routes = [
{path: '', component: ListPageComponent},
{path: 'd/:id', component: DetailsPageComponent},
{path: ':param1', component: ListPageComponent},
{path: ':param1/:param2', component: ListPageComponent},
{path: ':param1/:param2/:param3', component: ListPageComponent},
{path: '**', component: ListPageComponent}
];
在 ListPageComponent 上,我在顶部有一些 select 框过滤器,它们触发 onFilter 方法(简化):
onFilter(filters: any) {
this._router.navigate([
'myroute/',
this.param1,
this.param2,
this.param3
]);
}
现在,我想要的是当我触发此方法并导航(到同一页面组件)时,我不希望该组件再次 运行 ngOnInit ...只是为了改变URL 参数(我已经订阅了参数更改 -
this._route.params.subscribe)
我终于找到了解决方案:
可以只使用 location.replaceState,对我来说就像一个魅力!
好的,问题很简单,但自己好像找不到答案,所以请帮忙
我有这条路线(简化):
const routes: Routes = [
{path: '', component: ListPageComponent},
{path: 'd/:id', component: DetailsPageComponent},
{path: ':param1', component: ListPageComponent},
{path: ':param1/:param2', component: ListPageComponent},
{path: ':param1/:param2/:param3', component: ListPageComponent},
{path: '**', component: ListPageComponent}
];
在 ListPageComponent 上,我在顶部有一些 select 框过滤器,它们触发 onFilter 方法(简化):
onFilter(filters: any) {
this._router.navigate([
'myroute/',
this.param1,
this.param2,
this.param3
]);
}
现在,我想要的是当我触发此方法并导航(到同一页面组件)时,我不希望该组件再次 运行 ngOnInit ...只是为了改变URL 参数(我已经订阅了参数更改 - this._route.params.subscribe)
我终于找到了解决方案:
可以只使用 location.replaceState,对我来说就像一个魅力!