Я создаю большое приложение на Angular, которое использует функциональные модули с дочерними маршрутами. Каждый дочерний раздел визуализируется с помощью специального макета раздела, который для MVP устанавливает состояние для дочерних страниц. Например:
/app/projects/yJEBuuOmmRv7WuVomGkb
загрузит проект yJEBuuOmmRv7WuVomGkb
в контейнер состояния на любых дочерних маршрутах.
Я экспериментировал с наблюдением событий маршрутизатора, но столкнулся с некоторыми сложными ситуациями, когда приложение работает с разными маршрутизаторами в разных контекстах (дочерний или родительский).
Я хотел бы сделать это в определении маршрута, и мне было интересно, есть ли способ прикрепить функцию обратного вызова к маршруту, которая может захватывать параметры маршрута и применять их к контейнеру состояния.
Например, что-то вроде этого псевдокода:
const routes: Routes = [
{
path: '',
component: PageLayoutComponent,
children: [
{
path: '',
component: PagesComponent
},
{
path: 'admin/settings',
component: PageSettingsComponent
},
{
path: 'admin/publishing',
component: PagePublishingComponent
},
{
path: ':pageId',
component: PageDetailLayoutComponent,
// pseudo code!!!
onRoute: (params => {
StateContainer.set('page', params.pageId);
}),
children: [
{
path: '',
component: PageComponent
}
]
}
]
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class PagesRoutingModule { }