[英]How do I access route parameters that are mapped to a parent component from within a child component? (angular 2.0)
[英]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.