gpt4 book ai didi

dart - 我可以将服务注入(inject) CanActivate 吗?

转载 作者:行者123 更新时间:2023-12-02 12:56:45 24 4
gpt4 key购买 nike

与其他钩子(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com