0
我有以下路由我如何可以訪問在角2.0路由參數從沒有映射到一個路由/路由器出口組件
const routes: Routes = [
{ path: 'metadata/:path', component: MetadataDisplayComponent },
{ path: 'data/:path', component: DataDisplayComponent }
]
,這裏是我的AppComponent在元數據/數據顯示組件被注入。
@Component({
selector: 'my-app',
template: `
<tree-view></tree-view> <!-- a component the displays a tree like hierarchy of the path -->
<router-outlet></router-outlet>
`
})
所以基本上,我總是想樹視圖在那裏做它的事,無論元/數據狀態的,但我需要根據我在路由的參數進行初始化。
現在,我的問題是,我的「樹視圖」組件需要訪問我在2條路徑中定義的變量「:path」。當我嘗試以下(我的樹視圖中分量)
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
@Component({
selector : 'tree-view',
// etc...
})
export class TreeViewComponent implements OnInit {
private sub: any;
contstructor(
@Inject(ActivatedRoute) private route: ActivatedRoute
) {}
ngOnInit(): void {
this.sub = this.route.params.subscribe(params => {
console.log(params['path']); // this logs "undefined"
});
}
// added this as per the suggestion in the comments
ngAfterViewInit(): void {
this.sub = this.route.params.subscribe(params => {
console.log(params['path']); // this logs "undefined"
});
}
// etc...
}
我在訪問「路徑」參數是不成功的嘗試,它console.logged爲「不確定」。
當我嘗試在我的MetadataDisplayComponent中完全相同的ngOnInit時,我能夠console.log路徑沒有問題。
我幾乎肯定,這是因爲我的TreeViewComponent沒有與我的一個路由相關聯,因此無法訪問路由變量。它住在旁邊,但不在路由器插座內。
有什麼辦法可以讓這項工作出來?我承認,我可能已經以一種完全愚蠢的方式計劃了佈局,並願意接受建議。
您的代碼並不顯示後。路線。你在做這個嗎? –
是的,我。我試圖儘可能多地刪除代碼,以突出問題。我的路由在我的MetadataDisplayComponent中使用完全相同的設置,所以我至少得到了很多工作。 – Zack
嘗試將訂閱移至ngAfterViewInit()。 –