Angular 2路由总是通过root /

时间:2017-09-13 11:33:32

标签: angular angular2-routing angular-cli

如果我有路由配置:

应用-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

修改

这里要说明的是截图:

enter image description here

当我登录时,您可以看到0.chunk.js已加载,这是私有模块。如果在/路线上定义并且我不在/路线上,则不应加载。

1 个答案:

答案 0 :(得分:0)

从登录路线中删除canActive并在''中添加canLoad: [LoginGuard]路线。由于您的路线是在途中,因此不需要保护它。

const routes: Routes = [
  { path: '', loadChildren: './private/private.module#PrivateModule', canLoad: [LoginGuard] },
  { path: 'login', component: LoginComponent }
];