2016-11-25 209 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