在布局组件上获取参数['id']
Get param['id'] on layout component
我需要获取布局组件上的路由参数 ID。
routing.ts:
{
path: 'car/:id',
component: CarDetailComponent,
canActivate: [AuthGuard]
}
简而言之,我这样做是为了在我的 layout.component.ts 上获取汽车 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 returns 一直未定义。
注意:我每次更改页面时都需要所有参数 ID,而不仅仅是汽车的。所以我在 layout.component 上调用参数(这是一个包含 router-outlet 的公共页面)
谢谢。
你得到这个未定义的原因是在这一行:
this.param_id = this.route.params['id'];
更改为:
this.param_id = params['id'];
一切都会好起来的
它不起作用,因为布局组件路由不包含参数 ID。
您将必须访问 this.route
的 children 并迭代它们以获取 ID。
类似
this.route.children.forEach(child => {
child.params.subscribe(...); // do what you wanna do
}
当 children 也有 children 时,这会变得更加复杂。如果你真的总是需要从你的 layout-component.
访问 id 参数,我建议使用类似 ngrx/store or an uni-directional singleton service 的东西
我需要获取布局组件上的路由参数 ID。
routing.ts:
{
path: 'car/:id',
component: CarDetailComponent,
canActivate: [AuthGuard]
}
简而言之,我这样做是为了在我的 layout.component.ts 上获取汽车 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 returns 一直未定义。
注意:我每次更改页面时都需要所有参数 ID,而不仅仅是汽车的。所以我在 layout.component 上调用参数(这是一个包含 router-outlet 的公共页面)
谢谢。
你得到这个未定义的原因是在这一行:
this.param_id = this.route.params['id'];
更改为:
this.param_id = params['id'];
一切都会好起来的
它不起作用,因为布局组件路由不包含参数 ID。
您将必须访问 this.route
的 children 并迭代它们以获取 ID。
类似
this.route.children.forEach(child => {
child.params.subscribe(...); // do what you wanna do
}
当 children 也有 children 时,这会变得更加复杂。如果你真的总是需要从你的 layout-component.
访问 id 参数,我建议使用类似 ngrx/store or an uni-directional singleton service 的东西