如何在同一路径中添加CanActivate和loadChildren

cze*_*uya 6 angular-routing angular2-routing angular

我想懒惰加载我的模块,但同时使用canActivate保护它.我试过了:

{ path: 'dashboard/vendor', canActivate: AuthGuard, loadChildren: 'app/module/dashboard/vendor/vendor.module#VendorModule' }
Run Code Online (Sandbox Code Playgroud)

请注意,我没有使用子项,因为我使用RouterModule.forChild在vendor-routing.module中定义了供应商路由.

但它不起作用.有什么建议?

ale*_*nko 8

你应该使用canLoad而不是canActivate,所以如果不满足条件,它将不会加载你的LazyModule.

{ path: 'dashboard/vendor', canLoad: [AuthGuard], loadChildren: 'app/module/dashboard/vendor/vendor.module#VendorModule' }
Run Code Online (Sandbox Code Playgroud)

  • 我添加了`canLoad`仍然无法正常工作,如果我在lazzy loaded组件中添加`canActivate`,那么它的工作正常. (5认同)
  • 我错过了什么 ?我想用`loadchildern`添加canLoad / canActivate (3认同)