如何从孩子那里获得params url parent id

时间:2018-03-18 15:13:53

标签: angular routing

我在route.ts中有这个。

 path: 'profile/:id',
                component: ProfileComponent,
                canActivate: [SiteRouteGuard],
                children: [

                    {
                        path: 'albums',
                        component: AlbumsComponent,
                        canActivate: [SiteRouteGuard]

                    },
                               ...
                         ]

现在在我的个人资料中。我得到了这个

localhost:4200/profile/45666

当我路线到我的个人资料的相册.ts <。p

localhost:4200/profile/45666/albums

现在我在我的相册中。我怎样才能获得身份证45666?

我尝试使用ActivatedRoute:

console.log(this._route.snapshot.params.id) >> undefined

5 个答案:

答案 0 :(得分:6)

您可以使用ActivatedRoute

中的angular/router课程
import { ActivatedRoute, Router } from "@angular/router"

public activatedRoute: ActivatedRoute

this.activatedRoute.parent.params // return observable

如果你想要静态值,那么请求

this.activatedRoute.parent.snapshot.params // return static values

通过使用父属性,您可以访问父组件

中的所有参数和查询

答案 1 :(得分:3)

由于角度5.2.x,有另一种访问父级参数的方法。

您需要做的就是将配置选项paramsInheritanceStrategy设置为'always',如下所示:

RouterModule.forRoot(routes, {
    paramsInheritanceStrategy: 'always'
})

通过此配置,您将可以通过原型继承访问所有祖先路线参数,因此您可以直接从激活的路线获取它:

this.activatedRoute.snapshot.params

答案 2 :(得分:1)

如果您使用的是activateRoute,则可以在ngOnInit()方法中获取id。喜欢

this.activatedRoute.params.subscribe((params: Params) => {
    var id = params['id'];
  });

答案 3 :(得分:1)

您需要从@ angular / router:

导入ActivatedRoute
import { ActivatedRoute } from "@angular/router";

然后在AlbumsComponent的构造函数中,您可以获取:id参数 像这样:

let id = this.activatedRoute.parent.snapshot.params["id"]

希望它有所帮助!

答案 4 :(得分:1)

这样做

import { ActivatedRoute } from "@angular/router";
let idparam = this.activatedRoute.parent.snapshot.params["idparam"]