- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
This question有这个例子:
{
path: 'admin',
loadChildren:
'app/admin/admin.module#AdminModule',
canLoad: [AuthGuard]
}
AdminModule 是否仍可以在 canLoad 守卫就位的情况下预加载/预取?
如果不是,将 AuthGuard
canActivate
属性放在 AdminModule
中的所有路由上是唯一的其他选择吗?
最佳答案
其实没有什么意义,因为预加载会在应用启动的时候急切的发生。那么您的 AuthGuard
如何知道用户是谁或他们有权访问什么。它会在任何服务有机会恢复之前的 session 或与任何东西通信之前发生。
canLoad
和canActivate
是异步操作,如果要等待 才能预加载,预加载是无效的。
问问自己这个问题。我是否需要应用程序快速更改到 admin 部分的路由?如果您回答是,则使用 canActivate
并预加载,但如果延迟很好并且您想节省带宽,则使用不带预加载的 canLoad
。
综上所述,根据文档,不支持。
The PreloadAllModules strategy does not load feature areas protected by a CanLoad guard. This is by design.
关于javascript - 可以预加载使用 canLoad 的模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54012377/
文档说我不能同时使用这两个功能 https://angular.io/docs/ts/latest/guide/router.html#!#canload-blocks-preload 如果用户被授权
我遇到了一种奇怪的行为(或者可能是一种被通缉的行为)。我有一个 Angular 应用程序,其中所有模块都是延迟加载的。 在一个模块上,我有一个守卫检查来自 JWT 的解码用户是否是系统管理员。如果是这
This question有这个例子: { path: 'admin', loadChildren: 'app/admin/admin.module#AdminModule',
我有来自 BE 的权限 DTO,它决定了用户可以访问的应用程序部分。 使用 NgRx 选择器我想在 CanLoad 守卫中使用它,但我无法让它工作。 路线.ts { path: 'acquisit
我已经创建了一个 AuthGuard 服务并为其实现了 CanLoad 接口(interface),如下所示 import { Injectable } from '@angular/core'; i
如果我使用延迟加载并为“CanLoad”定义了一个保护。是否需要“CanActivate”?就像一个模块可能被有效加载但是用户做了一些使“CanLoad”无效的事情但是因为它被加载了用户可以通过Can
我不知道这是否是一个好习惯。但以下是我想要做的: 我有2个懒加载模块:ManagementModule和ConfigurationModule,路由配置如下: const routes: Routes
我有一个 Angular 2.0.1(最终版)应用,它使用 HashLocationStrategy 作为路线导航策略。 我定义了一条路线如下: { path: 'shiftmanag
canLoad 和 canActivate 有什么区别? export interface Route { path?: string; pathMatch?: string; match
我已经为延迟加载的状态添加了一个canLoad 守卫。我遇到的问题是,如果使用 router.navigate() 从不同的状态初始化状态,我无法获得任何路由参数。 所以这是我的路线配置: path:
我是一名优秀的程序员,十分优秀!