这是我的路由器:
Routes = [
{ path: 'immeuble', component: ImmeubleComponent ,children:[
{ path: ':id', children: [ { path: 'general',loadChildren: '...'}]
},
{ path: '', pathMatch:'full', component:AccueilComponent }, //when in url we have /immeuble this is called
]},
];
我尝试的内容:订阅params['id']
.ts
文件ImmeubleComponent
内的this.activatedRoute.firstChild.params.subscribe(
p => {
console.log(p);
}
)
所以ImmeubleComponent的.ts文件看起来像:
/immeuble
但是当我刷新页面时,这只订阅了一次,为什么?
如果我转到p=undefined
我的/immeuble/2/general
如果我输入网址p=2
,我就会很好router.navigate()
但这次匹配只有在我进入页面时,当我使用ImmeubleComponent
浏览我的应用时
我的订阅没有发出?
我想从varchar
订阅我的身份改变吗?如何实现?
添加firstChild.params
答案 0 :(得分:1)
我认为您需要在每次导航后再次订阅firstChild.params
,因为您正在远离此子路线。如果您不在这些路线之间使用back
,那么我认为它仅适用于firstChild.params.subscribe
。
这可能对您有用
constructor(router:Router, activatedRoute:ActivatedRoute) {
router.events.filter(e => e instanceof NavigationEnd).subscribe(e => {
console.log('params', activatedRoute.firstChild.snapshot.params);
});
}