- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与其他钩子(Hook)不同,CanActivate 是一个与组件分离的函数。
import 'dart:async';
import 'package:angular2/core.dart';
import 'package:angular2/router.dart';
@Component(selector: 'my-app', template: '<h1>Hello World!</h1>')
@CanActivate(someGuard)
class HelloComponent {}
FutureOr<bool> someGuard(ComponentInstruction next, ComponentInstruction prev) {
return true;
}
据我所知,可以在引导时拦截根注入(inject)器并将其分配给全局变量,以便我可以在任何地方访问它。 IMO,这听起来像是黑客,我不喜欢它。是否有在 CanActivate Hook 中注入(inject)服务的正确方法?
最佳答案
Angulars DI 仅支持构造函数注入(inject)。 @CanActivate()
是一个注释,因此不支持 DI。
不过有一个解决方法。
在库中创建变量并导入它
Injector injector;
创建应用程序时分配注入(inject)器
bootstrap(App, [
Auth,
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(LocationStrategy, useClass: HashLocationStrategy)
]).then((appRef: ComponentRef) => {
// store a reference to the application injector
injector = appRef.injector;
});
然后您可以使用注入(inject)器导入库并通过代码 someGuard()
关于dart - 我可以将服务注入(inject) CanActivate 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166429/
你好,我是 Angular 6 的新手,我遇到了一个关于提取用户的身份验证问题,如果没有登录就不会进入任何页面,我面临的问题是 Class 'NeedAuthGuard' incorrectly im
我写了一个 angular 4.3.0 typescript 库。在构建我的库时,我在 *.d.ts 文件中看到以下错误。 ERROR in [at-loader] ..\myLibrary\lib-
下面是我在 TypeScript 中实现 CanActivate 保护子句,当我编译这段代码时,它显示如下错误 A function whose declared type is neither 'v
我有这个 AuthGuard。在这段代码中,我想创建一个条件。如果我的 resetpasss 不为空,我想在此处的 ResetPassIdComponent 中导航,否则我想在 LoginFirstC
据我了解CanActivate Angular2 中的接口(interface)仅对路由更改有效。因此,如果我有一个要求用户登录的页面 p,我可以创建一个实现 CanActivate 接口(inter
我的路由器中有这些线路: .. canActivate: [MyGuard], path: "search", component: SearchComponent,
我有以下问题。我制作了一个 CanActivate Guard,如果您已登录,您可以“转到”债务组件。我的问题是,当我登录时,我想将用户重定向到债务组件(因为 RegistrationComponen
我正在使用 Observable返回 canActivate() .为测试设置了以下功能,它正确解析,组件显示。 canActivate(route: ActivatedRouteSnapshot,
最近,我一直在思考我正在开发的应用程序的安全性。客户端基于 Angular 构建,后端为 Rails API。据我所知,普遍的共识是,如果它在客户端,假设它可以被破坏。所以这让我想知道我何时以及是否应
我最近被 Angular 路由守卫卡住了。 CanActive 仅在页面加载时运行一次,并且不会在 protected 路由内的路由更改时运行。我认为这已更改,因为它过去常常在每次更改时运行。根据我在
我有这样的路线设置: export const APP_ROUTES: Routes = [ { path: '', resolve: {
我已经为我的 Angular 5.2 应用程序实现了 CanActivate 路由保护。如果它返回 true,则 URL 不会更改,但当它返回 false 时,URL 会更改并将路径附加到 URL。在
使用守卫,我尝试访问服务 但我无法在 canActivate 中返回一个 promise (它具有我无法更改的特定签名) 我的 autService 返回一个 promise ,因为它是异步的 我怎样
我有这样的路线: [ { path: ':orgName', children: [ { path: '', component: Ho
我有这样的路线: [ { path: ':orgName', children: [ { path: '', component: Ho
我有一个路径列表,我想将 CanActivate 应用于除某些路径之外的所有路径。是否有任何 Angular 丢弃某些路径的方法。目前我正在将 canActivate 应用到所有的 URL。如果有很多
I'm loading a books module with the following routing configuration (src/app/index.ts) -- 请注意,这是一个 s
我正在尝试在我的应用程序路由上使用 canActivate 功能,但是每当我编译该应用程序时,日志都会显示不断刷新的失败消息,我已将 console.log() 用于可见性。 我在这里遗漏了什么吗?
我有一个以这种方式使用惰性模块的应用程序: export const routes: Routes = [ { path: '', component: WelcomeCompon
我有一个关于 CanActivate 的问题 import { AuthService } from './auth.service'; import { CanActivate } from '@a
我是一名优秀的程序员,十分优秀!