我有以下设置:
app-module (root module)
+frontend-module
+backend-module
auth-module
前端模块应负责以下路径:
/
/overview
/settings
/help
所有路径的后端模块如下:
/backend/**
这些路径的auth模块:
/sign-in
/sign-up
/sign-out
如果用户未登录,则应始终将其重定向到/sign-in
。
就像你上面看到的那样,我希望前端和后端模块能够懒惰地加载。因此,每当用户进入网站时,它应该非常快速地加载,因为auth模块非常轻量级。如果他然后输入他的名字和密码,他应该被重定向到/overview
,这是在前端模块中(它应该懒得加载)。
我的问题是,我无法使前端模块的延迟加载工作。我尝试了以下方法:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'backend',
loadChildren: 'app/+backend/backend.module#BackendModule',
canLoad: [AdminAuthGuardService]
},
{
path: '',
loadChildren: 'app/+frontend/frontend.module#FrontendModule',
canLoad: [AuthGuardService]
}
])
],
exports: [RouterModule]
})
export class AppRoutingModule {
}
急切加载auth模块的路由配置,并定义上述路径(没有任何保护)。但由于前端模块的保护被定义为空路径,因此它将假设/sign-in
也是前端模块的一部分。后端模块按预期工作。
甚至有可能以某种方式实现这一目标吗?
另一个可能是问题的问题是根模块甚至不知道哪些路径有效,所以对于当前的设置,无论如何都必须加载frondend模块,以便它可以验证路径,或者我是错?
作为解释:我的想法是如果用户没有被刷新,则快速响应,以便立即加载auth模块。在角度完成它的工作后,我会发出前端模块的负载。因此,当用户忙于登录时,实际应用程序将在后台加载
欢迎任何想法/建议/最佳做法。但我真的不想破解。如果angular不提供此功能,我将提交功能请求,以便进一步讨论此用例,但我不想以任何价格实现此功能