javascript - 可以预加载使用 canLoad 的模块吗?

标签 javascript angular typescript

This question有这个例子:

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

AdminModule 是否仍可以在 canLoad 守卫就位的情况下预加载/预取?

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

最佳答案

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

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

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

综上所述,根据文档,不支持

The PreloadAllModules strategy does not load feature areas protected by a CanLoad guard. This is by design.

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

关于javascript - 可以预加载使用 canLoad 的模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012377/

相关文章:

angular - 扩展面板标题中的复选框

Angular 4填充下拉列表不起作用

typescript - 声明一个克隆函数以使只读属性在 TypeScript 中可写?

angular - Javascript removeEventListener OnDestroy 在 Angular 6 中不起作用

javascript - 使用箭头键使用输入文本导航两个 HTML 表

javascript - jquery 选择器 - 除了最后 3 条记录之外的表的所有行

javascript - 带数据返回的 Python CGI

javascript - 循环获取,保持结果顺序

typescript - 预期的错误声明

angular - 如何检查我的表单数组是否已经拥有该对象