CanLoad 守卫不允许“/”路线

CanLoad guard doesn't allow for '/' route

我的计划是建立一个项目,其中位于“/”上的主要网站非常庞大,仅在实际登录后才延迟加载。

const routes: Routes = [
  { path: '', canLoad: [AuthGuard], loadChildren: './home/home.module#HomeModule' },
  { path: 'login', component: LoginComponent },
  { path: '**', redirectTo: '/'  },
];

但 CanLoad 似乎有这样的限制,它不适用于“/”,因为发生的情况是应用程序陷入无限循环。当 canLoad 被拒绝时,CanLoad 有一个内置的自动重定向到 '/',即使你在 "false".

时将重定向到 '/login'

我的临时解决方案是不使用“root”作为路由,而是将其称为“/home”或其他名称,但这会在应用程序的每个路由前添加 /home/。

CanActivate guard 适用于此设置,但当然我没有得到延迟加载的好处,因为无论如何都会加载完整的应用程序 (home/),即使用户只会卡在/登录屏幕。

相关:

https://github.com/angular/angular/issues/16197

https://github.com/angular/angular/issues/24715

编辑:将 'login' 路线移动到数组中的第一个位置。