繁体   English   中英

如何从父组件访问子routeParams?

[英]How do I access child routeParams from a parent component?

我有一个“项目”页面,我试图访问或不是您正在查看项目列表或单个项目,但不使用子组件。

考虑:

App路由器配置

{ path: '/projects/...', component: ProjectCmp, name: 'Projects' },

那么项目组件:

    { path: '/', useAsDefault:true,component: ProjectDashboardCmp, name: 'List' },
    { path: '/:id/', component: ProjectDashboardCmp, name: 'Dashboard' },
    { path: '/:id/shows', component: ShowCmp, name: 'Shows' },

如何获得传递给“仪表板”路线的“id”? 它不是这个组件的一个参数,所以如果没有孩子踢它或服务我就无法访问它。

例如,在项目组件中:

constructor(public params: RouteParams) {
    this.projectId = params.get('id');
    console.log("The project Id is:",this.projectId); 
    //The Project Id is:null

但是在projectDashboardCmp中它按预期工作。

问题是我做了类似的事情:

<router-outlet *ngIf="!this.projectId"></router-outlet>

在项目组件中,它不会加载子路由而只是死...

如果其他人对如何访问子路由参数感兴趣 - 这是解决方案(Angular 4.0):

// Inside ngOnInit() method of a parent component
this.route.children[0].params
    .subscribe((childParams: Params) => this.projectId = +childParams['id']);

注意: this.route.children可以有多个子路由。 在我的情况下 - 它只有一个,所以我用[0]选择它。

总的来说,我不建议使用这种方法,除非你别无选择

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM