如何使用Injector而不是singleton获取类的新实例

时间:2017-08-30 03:54:37

标签: angular dependency-injection

我的角度应用程序中有两个可注射类

@Injectable()
class B {}

@Injectable()
class A {
  constructor(b:B) { }
}

我希望A类是Singleton,B类是Transient

我开始知道我可以在A类中使用 ReflectiveInjector.resolveAndCreate 来获取B类的实例。有没有更好的方法来实现这个目标?

2 个答案:

答案 0 :(得分:3)

由于提供程序的所有现有配方都创建单例,甚至是工厂,您可以创建自己的注入器,从组件注入器继承所有提供程序,并使用resolveAndInstantiate方法每次都获取新实例:

ReflectiveInjector

Here is the demo

另请注意,@ 5.x.x中不推荐使用{{1}}。似乎新StaticInjector中没有其他选择。我报告了an issue

答案 1 :(得分:1)

有一种方法可以使用StaticInjector和功能性Javascript来解决。使用Max Koretskyi答案,我做了很少的修改:

get(df.filter($"F1" === "x" && $"F2"==="y"))
//  Double = 1.0

get(df.filter($"F1" === "x" && $"F2"==="y1"))
// Double = 0.0