角度依赖注入 - 使用T?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了角度依赖注入 - 使用T?相关的知识,希望对你有一定的参考价值。
我正在写一个非常简单的指令,本质上让我指向另一个类实例作为提供者(不要问我为什么,我知道它是愚蠢的,但除此之外)。因此,我在我的提供者声明中使用“useExisting”。这当然有效,但我不想为每一类T创建一个指令。
有没有办法做这样的事情:
@Directive({
selector: '[appMyGenericDirective]',
providers: [{provide: NG_VALIDATORS, useExisting: T, multi: true}]
})
export class MyGenericDirective<T> {
}
哪个“T”是我想要'使用'的类?
答案
好吧,不知何故,html模板必须指定T
。如果您不想为每个T声明一个单独的指令,您可以尝试声明一个将T作为@Input()
的指令:
@Directive({
selector: '[freakyValidator]',
providers: [{provide: NG_VALIDATORS, useFactory: (freaky) => freaky.validator, deps:[FreakyValidatorDirective], multi: true}]
})
export class FreakyValidatorDirective {
constructor(private injector: Injector) {}
@Input()
set freakyValidator(validatorClass) {
this.validator = this.injector.get(validatorClass);
}
validator: Validator;
}
(前面的代码是未经测试的,我有点不确定该指令或其提供者是否首先被实例化。但它可能值得一试)
以上是关于角度依赖注入 - 使用T?的主要内容,如果未能解决你的问题,请参考以下文章
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段