Angular 角度2-对父路由和子路由使用相同的解析器
我有一个Angular 2.0(稳定版)应用程序,其中一个实体是Angular 角度2-对父路由和子路由使用相同的解析器,angular,angular2-routing,Angular,Angular2 Routing,我有一个Angular 2.0(稳定版)应用程序,其中一个实体是项目。对于每一个项目,我都将其详细信息分布在不同的路段/路线上: project/:id/概述 project/:id/文档 project/:id/logs 等 project的API在一次调用中返回大部分数据,因此我需要调用它一次,并使其可用于不同的子路由 我的路线如下: export const routing: ModuleWithProviders = RouterModule.forChild([ { pat
项目
。对于每一个项目
,我都将其详细信息分布在不同的路段/路线上:
project/:id/概述
project/:id/文档
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
代码,认为角度路由器可能也会传递路由数据,但没有成功
有什么想法吗
谢谢您可以使用'route'的'parent'属性从父解析程序获取数据
ngOnInit() {
this.route.parent.data.subscribe(data => {
this.project = data.project;
});
}
根据组件层次结构解析对象的距离,您可以通过
父属性
访问该对象
示例:
ngOnInit() {
this.route.parent.data.subscribe(data => this.project = data.project);
}
或不订阅
附言。
请记住,如果您的组件比一个级别更深,您可以无限次地链接
父属性。像这个.route.snapshot.parent.parent.data['project']
。干杯 在当前版本中也可以这样做:this.route.parent.snapshot.data['mydata']
如果我想要同步访问?
ngOnInit() {
this.project = this.route.snapshot.parent.data['project'];
}