首页 > 解决方案 > 可以预加载使用 canLoad 的模块吗?

问题描述

这个问题有这个例子:

{
    path: 'admin',
    loadChildren: 
'app/admin/admin.module#AdminModule',
    canLoad: [AuthGuard]
}

AdminModule 仍然可以在 canLoad 保护到位的情况下预加载/预取吗?

如果不是,则将属性放在?AuthGuard canActivate内的所有路线上的唯一其他选择AdminModule

标签: javascriptangulartypescript

解决方案


这实际上没有任何意义,因为预加载会在应用程序启动时急切发生。那么您如何AuthGuard知道用户是谁或他们有权访问什么。它会在任何服务有机会恢复之前的会话或与任何东西通信之前发生。

canLoadcanActivate是异步操作,如果必须等待才能预加载,预加载是无效的。

问自己这个问题。我是否需要应用程序快速更改到管理部分的路由。如果您回答是,则使用canActivate并预加载,但如果延迟很好并且您想节省带宽,则使用canLoad不预加载。

尽管如此,根据文档不支持它。

PreloadAllModules 策略不加载受 CanLoad 防护保护的特征区域。这是设计使然。

https://angular.io/guide/router#canload-blocks-preload


推荐阅读