В общем есть такая конфигурация:
const appRoutes: Routes = [
{
path: '', component: BaseComponent, resolve: { data: PermissionResolver }, children: [
{
path: '', loadChildren: './area/Home/Home.module#HomeModule',
}
}
Внутри модуля Home такой роут:
const homeRoutes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full' },
{
path: 'home', component: homeContainerComponent, children: [
{
path: 'add', component: AddContainerComponent, canActivate: [CanActivateAdd], children: [
{
path: '', component: AddComponent
}
]
}
],
}
];
Так вот, когда я сразу иду на home/add через адресную строку, то Resolve не срабатывает, а срабатывает сразу же canActive.
Вообще я ожидал, что Guard'ы будут срабатывать в иерархическом порядке.
Т.е сначала Resolve, так как он висит в корневом маршруте, а потом уже все дочерние Guard'ы.
Как добиться желаемого? Т.е сначала получить учетные данные от API в независимости куда пользователь зашел, а затем использовать canActive?
Нашел только вот
такую статейку, как из ресолвера делают canActive. Неужели нет методов "из коробки"?