Angular 2中关于DI的每个教程都是将依赖项设置为构造函数。但是如果我想创建一个类的实例并且该类与其他类有一些依赖关系会怎样。
我有A类和B类.B类应注入A.但A每次都不同,应该能够创建它的实例。
如果我在A
的构造函数中设置DI,如何调用new A()
?
我尝试将B
作为私有变量添加到具有A
装饰的@Inject(B)
。
class A {
@Inject(B) b: B;
}
答案 0 :(得分:1)
Angular依赖注入仅支持构造函数注入。
您可以注射注射器
constructor(private injector:Injector) {}
foo() {
var x = injector.get(B);
var a = new A(b);
}
这可能也有助于你的情况,其中DI注入一个工厂函数,每次调用它都会返回一个新实例。 Create new instance of class that has dependencies, not understanding factory provider
您还可以设置新的注射器,也包括用于查找提供者的父注射器。另请参阅Getting dependency from Injector manually inside a directive