Angular 2 中有关 DI 的每个教程都是将依赖项设置到构造函数中。但是,如果我想创建该类的实例并且该类对其他类有一些依赖性怎么办。
我有 A 类和 B 类。B 类应该注入(inject)到 A 中。但是 A 每次都不一样,应该能够创建它的一个实例。
如果我在 A
的构造函数中设置 DI,如何调用 new A()
?
我尝试使用 @Inject(B)
修饰将 B
作为私有(private)变量添加到 A
。
class A {
@Inject(B) b: B;
}
最佳答案
Angular 依赖注入(inject)只支持构造函数注入(inject)。
你可以注入(inject)一个注入(inject)器
constructor(private injector:Injector) {}
foo() {
var x = injector.get(B);
var a = new A(b);
}
这也可能有助于您的情况,即 DI 注入(inject)一个工厂函数,该函数在每次调用时都返回一个新实例。 Create new instance of class that has dependencies, not understanding factory provider
您还可以设置新的注入(inject)器,也包括用于查找供应商的父注入(inject)器。另见 Getting dependency from Injector manually inside a directive
关于Angular 2依赖注入(inject)从构造函数外部进行实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42458213/