Угловые охранники для навигации по родительскому маршруту - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть приложение со следующими маршрутами:

  • / root / foo
  • / root / bar
  • / root / foo / (outlet: X)
  • / root / bar / (выход: X)

При переходе на /root/foo или /root/bar будет вычислено значение X и перенаправлен на /root/foo/(outlet:X) или /root/bar/(outlet:X) соответственно.

Есть ли способ реализовать Guard, чтобы запретить переход по ссылке маршрутизатора на /root/foo из /root/foo/(outlet:X)?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Мне удалось заставить его работать, используя CanDeactivate guard, но на дочерних компонентах.

Пример маршрута: { path: 'root/foo', component: ListComponent, children: [ { path: ':id', canDeactivate: [CanNavigateToParentRouteGuard], component: ChildComponent, outlet: 'outlet' } ] }, Guard: canDeactivate(component: ChildComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): boolean { return !currentState.url.startsWith(nextState.url); }

0 голосов
/ 27 сентября 2018

Вы можете реализовать защиту canDeactivate , проверяя текущие и целевые URL и предотвращая навигацию в этих конкретных случаях.

...