Angular 6: Как зарегистрировать canDeactivate guard против всех маршрутов - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть функция canDeactivate, которая проверяет, можно ли деактивировать маршрут (Компонент). Он отлично работает, когда я применяю его на маршруте.

const routes: Routes = [
  { path: '', component: MyComponent, canDeactivate: [MyGuard] }
]

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

Примечание: я не хочу ставить этот охранник на всех моих маршрутах.

Есть ли какой-нибудь Observable, EvenEmitter или что-то, на что я мог бы подписаться и обновить маршрут, пройдя по всем маршрутам?

Также будет полезен любой код обхода, который проходит через все маршруты.

Примечание: CanDeactivate не вызывается при изменении дочернего маршрута.

Спасибо!

1 Ответ

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

Примерно так может работать:

const routes: Routes = [
  { path: '', canDeactivate: [MyGuard], children: [
    { path: 'cmp1', component: MyComponent1 },
    { path: 'cmp2', component: MyComponent2 },
    { path: 'lazy', loadChildren: './modules/lazy/lazy.module#LazyModule' },
  ] },
];

Просто добавьте один корневой маршрут с этим охранником и все другие маршруты в качестве его дочерних элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...