在布局组件上获取参数['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 的东西