我需要在布局组件上获取路径参数id。
routing.ts:
{
path: 'car/:id',
component: CarDetailComponent,
canActivate: [AuthGuard]
}
简单地说,我这样做是为了在我的 layout.component.ts上获取Car ID:
public param_id: string;
constructor(private route: ActivatedRoute) {
this.route.params.subscribe((params: Params) => {
if (params['id']) {
this.param_id = this.route.params['id'];
console.log(params['id']); // undefined
}
});
}
param_id始终返回undefined。
注意:每当更改页面时我都需要所有params id,而不仅仅是car。所以我在layout.component上调用params(它是包含路由器插座的常用页面)
感谢。
答案 0 :(得分:1)
它不起作用,因为布局组件路由不包含参数id。
您必须访问this.route
的子项并迭代它们以获取ID。
类似
this.route.children.forEach(child => {
child.params.subscribe(...); // do what you wanna do
}
当孩子还有孩子时,这变得越来越复杂。如果您确实需要从布局组件中访问id参数,我建议您使用ngrx/store或单向singleton service之类的内容。
答案 1 :(得分:0)
你得到这个未定义的原因是在这一行:
this.param_id = this.route.params['id'];
更改它:
this.param_id = params['id'];
一切都会有效