2016-11-25 147 views
6

我有一个路径:/应用程序/项目/ 23 /视图角2个路线PARAMS在子路由

路径的每个部分是前一部分的孩子,所有的孩子都懒加载(不知道的这里延迟加载位是相关的)

/app   (root component) 
    /project  (child component of app, child route of app) 
    /23  (route param 'projectId') 
     /views (child component of project, child route of project) 

我试图访问路线参数 '专案编号'(在这种情况下:23)

执行以下操作:

constructor(private route: ActivatedRoute) {} 
ngOnInit() { 
    this.route.params.subscribe(params => { 
     console.log('params:', params); 
} 

让我对this.route.params

params: {} 

一个空的对象。然而这样做:

constructor(private route: ActivatedRoute) {} 
ngOnInit() { 
    this.route.parent.parent.params.subscribe(params => { 
     console.log('params:', params); 
} 

给我什么我在寻找:

params: Object {projectId: "23"} 

因为它是一个孩子的路线,我必须指定this.route。 parent.parent获取(某些)父路由的路由参数?

有来自途径获取则params的没有更好的办法,因为如果发生了什么:

1)我改变孩子航线的深度和移动它一个步骤下来。我是否必须现在更改我的代码来说this.route。 parent.parent.parent .params

2)或者说它是第10代(子代,子代?,伟大 - 曾孙?)。然后我必须说:this.route。 parent.parent.parent.parent.parent.parent.parent.parent.parent .params

---编辑:添加了路由配置文件---

app.routing.ts

const routes: Routes = [ 
    {path: 'app', loadChildren: './views/private/private.module#PrivateModule'} 
]; 

private.routing.ts

const routes: Routes = [{ 
    path: '', 
    component: PrivateComponent, 
    children: [    
    {path: 'project', loadChildren: './project/project.module#ProjectModule'}, 
    {path: '', redirectTo: 'project', pathMatch: 'full'} 
] 

个project.routing.ts

const routes: Routes = [{ 
    path: ':projectId', 
    component: ProjectComponent, 
    children: [ 
    {path: 'views', loadChildren: './views/views.module#ViewsModule'}, 
    {path: '', redirectTo: 'views', pathMatch: 'full'} 
    ] 
+1

请问您能否显示您的所有路由配置。你想在哪个组件中访问'params'? – mxii

+0

@mxii添加了route-configs – Nik

回答

1

您可以pathFromRoot属性访问路线的树,它返回的​​3210与所有父母的数组。

this.route.pathFromRoot[2].params