Родительский распознаватель не вызывается на дочерних ленивых загруженных маршрутах.

Я пытаюсь установить маршруты боковой панели на основе различных привилегий роли пользователя. Код для настройки маршрутов боковой панели находится в службе распознавания сайтов. Который я назвал в родительском пути, который, я думаю, должен быть вызван и для его дочерних маршрутов. Но вместо этого этот распознаватель вызывается только при обновлении конкретного дочернего маршрута.

Вот пример моей службы маршрутизации сайта:

{
path: ':siteId',
resolve: { site: SiteResolverService },
children: [
  // ... other child routes
  {
    path: 'jsa-training-user-assigned-jsa',
    loadChildren: () => import('../jsa-quiz/jsa-quiz.module').then(m => m.JsaQuizModule),
    canActivate: [RoleGuardService],
    data: { expectedRole: [UserRole.SystemAdmin, UserRole.JsaCreator, UserRole.SiteAdmin, UserRole.PasscodeUser] },
    runGuardsAndResolvers: 'always'
  },
  // ... other child routes
]

здесь, на этом маршруте, я хочу, чтобы решатель вызывался без обновления, поэтому я попробовал ниже, но не работает.

runGuardsAndResolvers: 'всегда'

Всего 1 ответ


Преобразователь вызывается, когда вы обновляете дочерний маршрут, потому что запускается все дерево маршрутов, в то время как доступ к дочернему маршруту от родителя будет запускать только дочерний маршрут.

Вы все еще можете получить результат родительского распознавателя в дочернем компоненте, route.parent к route.parent :

Дочерний компонент.ts

import { ActivatedRoute } from '@angular/router'

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  console.log(this.route.parent.snapshot.data);
}

Есть идеи?

10000