角度6:如何注册canDeactivate对所有路由的防护

时间:2018-09-14 09:20:48

标签: angular angular6

我有一个canDeactivate守护程序,用于检查route(Component)是否可以停用。当我在路线上应用它时,它可以正常工作。

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

我希望将此canDeactivate防护应用于我的应用中的所有路由,无论它们是应用的延迟加载/预加载/加载。

注意:我不想在所有路线上都写这个后卫。

是否存在任何Observable,EvenEmitter或我可以通过遍历所有路由来更新路由的东西?

此外,任何遍历所有路径的遍历代码都会很有帮助。

注意:子路由更改时,CanDeactivate不会被调用。

谢谢!

1 个答案:

答案 0 :(得分:1)

像这样的事情可以做到:

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

只需添加一条带有该守卫的根路由,并将所有其他路由作为其子级。