我想根据当前用户的组/角色在应用程序的根路由中加载其他模块。我有一个服务类,可以在其中获得当前用户的组,然后我想基于该组加载惰性模块。问题是:我该怎么做:如何定义条件模块延迟加载( loadChildren属性)?最好的方法是什么?
我认为这些解决方案:
1-将服务注入app-routing.module并在loadChildren属性上执行if else子句,例如:loadChildren: this.service.group === 'A' ? #moduleA : #moduleB
。这可能吗?如果可以,可以在路由模块中注入服务吗?
2-我可以对根路由使用特定的防护,然后进行重定向。在那种情况下,我将使用canLoad,因为如果组不匹配([{Difference between Angular's canLoad and canActivate?),我不想模块事件加载。如果是这样,我将需要确定当前路由是否是应用重定向的根。
我有以下代码:
const routes: Routes = [
{
path: '',
loadChildren: './moduleOne.module#moduleOne', //the module that will be
//loaded will depends on the group of current user.
canActivate: [AuthGuard]
},
谢谢大家!