Родительский распознаватель не вызывается на дочерних ленивых загруженных маршрутах. - PullRequest
1 голос
/ 12 февраля 2020

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

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

{
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: 'always'

1 Ответ

1 голос
/ 12 февраля 2020

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

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

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

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) {}

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