Angular 2中的依赖注入在使用内联注入器和构造函数注入时创建多个实例

时间:2016-05-13 11:28:47

标签: angular typescript ionic-framework dependency-injection

我正在研究Ionic 2 TypeScript项目。 在应用程序启动期间,我通过构造函数注入服务。

@App({
    providers: [ MyService ]
})
export class MyApp {
   constructor( private instance1 : MyService ){}
}

在另一个班级我使用

let injector = Injector.resolveAndCreate ( [ MyService ] );
let instance2 = injector .get( MyService  );

我得到两个不同的变量实例instance1和instance2。

是否有任何可能的方法通过使用内联Injector和Constructor将它们作为一个实例

1 个答案:

答案 0 :(得分:2)

每个提供商实例维护“单身人士”。如果你创建一个新的Injector(那是Injector.resolveAndCreate ( [ MyService ] );所做的,那么它也有它自己的提供者实例。因此,这种行为是预期的。

您可以将Injector注入您的组件和服务,然后创建一个子注入器,然后按预期工作。

如果您需要无法注入Angular进样器的进样器,则此注释中会解释一种解决方法(使用Plunker)https://github.com/angular/angular/issues/4112#issuecomment-153811572