Задать вопрос
@iluxa1810

Почему дочерний CanActivate срабатывает раньше корневого Resolver?

В общем есть такая конфигурация:

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. Неужели нет методов "из коробки"?
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы