我有一個Angular 2.0(穩定版本)應用程序,其中一個實體是project
。對於這些projects
的,我有它的詳細信息傳播翻過不同的部分/路線:Angular 2 - 爲父母和小孩路線使用相同的解析器
project/:id/overview
project/:id/documents
project/:id/logs
- 等
爲project
回報的API大部分數據在一次調用中,所以我需要調用一次,並使其可用於不同的子路由。
我的路線是這樣的:
export const routing: ModuleWithProviders = RouterModule.forChild([
{ path: 'projects', component: ProjectsComponent },
{ path: 'project/new', component: NewProjectComponent },
{
path: 'project/:id',
component: ProjectDetailComponent,
resolve: {
project: ProjectDetailResolve
},
children: [
{ path: '', redirectTo: 'overview', pathMatch: 'full' },
{ path: 'overview', component: ProjectOverviewComponent },
{ path: 'documents', component: DocumentsComponent },
{ path: 'logs', component: LogsComponent },
]
}
]);
ProjectDetailComponent
目前通過獲取項目數據成功,與解析器(沒有問題存在):
ngOnInit() {
this.route.data.forEach((data: { project: any }) => {
this.project = data.project;
});
}
但我需要傳遞的是同一個項目直到子路由,因爲爲每個路由觸發另一個API調用沒有意義。
我已經嘗試在子組件中使用相同的ngOnInit
代碼,認爲也許Angular Router也會傳遞路由數據,但沒有成功。
有什麼想法嗎?
感謝
謝謝,完美的作品! – yorch
在當前版本中也可以這樣做:''this.route.parent.snapshot.data ['mydata']''如果我想要同步訪問嗎? – Matt