У меня есть приложение Angular 2.0 (стабильная версия), где один из объектов project
. Для каждого из этих projects
у меня есть данные, которые распространяются по разным разделам/маршрутам:
-
project/:id/overview
-
project/:id/documents
-
project/:id/logs
- и т.д.
API для project
возвращает большую часть данных в одном вызове, поэтому мне нужно вызвать его один раз и сделать его доступным для разных дочерних маршрутов.
Мои маршруты выглядят так:
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
в настоящее время успешно получает данные проекта с помощью Resolver (без проблем):
ngOnInit() {
this.route.data.forEach((data: { project: any }) => {
this.project = data.project;
});
}
Но мне нужно передать этот же проект на дочерние маршруты, поскольку нет смысла запускать другой вызов API для каждого из этих маршрутов.
Я попытался использовать один и тот же код ngOnInit
в дочерних компонентах, считая, что, возможно, маршрутизатор Angular также передаст данные маршрута, но не удастся.
Любые идеи, пожалуйста?
Спасибо