Javascript 是否可以预加载使用canLoad的模块?

Javascript 是否可以预加载使用canLoad的模块?,javascript,angular,typescript,Javascript,Angular,Typescript,例如: { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule', canLoad: [AuthGuard] } 在canLoad防护装置就位的情况下,AdminModule是否仍然可以预加载/预取 如果不是,那么将AuthGuardcanActivate属性放在AdminModule中的所有路由上的唯一其他选项是什么?这实际上没有意义,因为当应用程序启动时,预加载会立即发生。那么,您的Au

例如:

{
    path: 'admin',
    loadChildren: 
'app/admin/admin.module#AdminModule',
    canLoad: [AuthGuard]
}
在canLoad防护装置就位的情况下,AdminModule是否仍然可以预加载/预取


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

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

canLoad
canActivate
是异步操作,如果必须等待才能预加载,则预加载无效

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

尽管如此,根据文档,它是不受支持的

Preload AllModules策略不加载由CanLoad guard保护的功能区域。这是故意的


角度7及以上。在ngrx图书收藏示例中,我使用AuthGuard在用户登录之前阻止访问图书模块,因此可以通过自定义的

预加载保护。登录后,他们可以看到本地存储在内存中的藏书。因此,如果可以将
canLoad
guard与预加载结合使用,那么一旦用户登录,book模块就会可用。因此,总体而言,应用程序加载速度更快,我们已经准备好了图书模块,可以在登录后使用。相关问题:@Ole哦,是的,我也遇到过这个问题。您可以在延迟加载的子路由上方定义空的父路由,并将canActivateChild应用于父路由。这将防止加载的模块只是为了检查它是否可以激活。甜-我喜欢这个解决方案很多!谢谢,新年快乐!