我想要做的事情概述:
在组件内部,我想检查特定queryParam的URL。如果找到了,我想做一件事。如果没有,我想在URL中添加一个queryParam并做另一件事。
我认为最好的方法是使用ActivatedRoute.snapshot。但是,如果我试试这个:
ngOnInit(){
if (this._route.snapshot.queryParams['id']){
...
} else {
this._router.navigate([ "home" ], { queryParams: {id:"1"} });
...
}
}
注意:_route是ActivatedRoute的一个实例,_router是Router的一个实例。此外,我在" home"在这里路线。
问题:
我注意到我可以将这个if..else包装在一个0ms的setTimeout中,并且它可以正常工作。但是,我不想这样做。有没有建议最好的方法来达到这个目标?
这是我的路由配置:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'home',
component: ComponentA,
children: [
{ path: 'search', component: ComponentB },
{ path: 'rfis', component: ComponentC },
{ path: 'cip', component: ComponentD },
{ path: '', component: ComponentE }
]
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
}
])
],
exports: [
RouterModule
]
})
我尝试添加此逻辑的组件不在路由中。它直接添加到主路由的HTML模板中。也许这是一个问题?