如果我有路由配置:
应用-routing.module.ts
const routes: Routes = [
{ path: '', loadChildren: './private/private.module#PrivateModule' },
{ path: 'login', component: LoginComponent }
];
当我导航到/login
时,延迟加载的私有模块将始终加载。最大的问题是如果我canLoad
守护那么只有经过身份验证的用户才能访问它。但是,如果我每次去/login
,我都会通过canLoad
后卫重定向到/login
,后者将再次通过canLoad
,依此类推 - 无限循环将被创建。对此有任何想法或解决方法。
理想情况下,我希望有一个公共路由/login
和一个私有模块/
,它将包含私有模块以及其中将加载延迟的共享模块。我不希望路由上有任何前缀,这就是我想使用根路由/
的原因。
|_ core
|_ shared
|_ login
|_ private
|____ shared
|____ core
|____ dashboard
|____ etc
修改
这里要说明的是截图:
当我登录时,您可以看到0.chunk.js
已加载,这是私有模块。如果在/
路线上定义并且我不在/
路线上,则不应加载。
答案 0 :(得分:0)
从登录路线中删除canActive
并在''中添加canLoad: [LoginGuard]
路线。由于您的路线是在途中,因此不需要保护它。
const routes: Routes = [
{ path: '', loadChildren: './private/private.module#PrivateModule', canLoad: [LoginGuard] },
{ path: 'login', component: LoginComponent }
];