【发布时间】:2017-09-13 11:33:31
【问题描述】:
如果我有这样的路由配置:
app-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 已加载,这是私有模块。当它在/ 路由上定义并且我不在/ 路由上时,它不应该加载。
【问题讨论】:
-
那么你的问题是什么?
-
如果我为根路由包含
canLoad保护,如何避免无限循环。或者换句话说,如果我导航到/login,如何避免通过定义的根路由? -
请检查编辑。
-
我稍后看看
标签: angular angular2-routing angular-cli