Я пытаюсь установить маршруты боковой панели на основе различных привилегий роли пользователя. Код для настройки маршрутов боковой панели находится в службе распознавания сайтов. Который я назвал в родительском пути, который, я думаю, должен быть вызван и для его дочерних маршрутов. Но вместо этого этот распознаватель вызывается только при обновлении конкретного дочернего маршрута.
Вот пример моей службы маршрутизации сайта:
{
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);
}