角度-延迟加载时有条件的模块加载

时间:2018-11-24 04:11:03

标签: angular angular-ui-router

我想根据当前用户的组/角色在应用程序的根路由中加载其他模块。我有一个服务类,可以在其中获得当前用户的组,然后我想基于该组加载惰性模块。问题是:我该怎么做:如何定义条件模块延迟加载( 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]
},

谢谢大家!

0 个答案:

没有答案