Angular 6:如何注册canDeactivate防范所有路由

问题描述 投票:0回答:1

我有一个canDeactivate防护,检查路由(组件)是否可以取消激活。当我在路线上应用它时,它工作正常。

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

我希望这个canDeactivate guard能够应用于我的应用程序中的所有路由,无论它们是Lazy加载/ Pre Loaded / Loaded with app。

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

是否有任何Observable,EvenEmitter或者我可以通过遍历所有路线订阅和更新路线的东西?

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

注意:子路径更改时不会调用CanDeactivate。

谢谢!

angular angular6
1个回答
1
投票

像这样的东西可以完成这项工作:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.