7

Ionic 2 TypeScriptプロジェクトで作業しています。 アプリケーションの起動時に、私はコンストラクタを通してサービスを注入します。Angular 2の依存インジェクションは、インラインインジェクタとコンストラクタインジェクションを使用して複数のインスタンスを作成します。

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

と私は

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

を使用する別のクラスでは、私はインスタンス1とinstance2での変数の二つの異なるインスタンスを取得します。

インジェクタとコンストラクタ

+0

振る舞いは(私の答えを参照)が期待されている。であるために回避策を提案できるあなたのユースケースについてもっと知る必要があります –

答えて

2

「シングルトン」がプロバイダインスタンスごとに維持されているインラインを使用することにより、1つのインスタンスとして、それらを作るためにすべての可能な方法はあります。新しいInjectorを作成した場合(つまりInjector.resolveAndCreate ([ MyService ]);が、それはまた、それが自分のプロバイダのインスタンスです。そのための行動が期待されている。

あなたのコンポーネントとサービスにInjectorを注入して、仕事ができる子インジェクターを作成することができていないものです予想通り。

あなたが角度インジェクターを注入することはできませんインジェクターが必要な場合は、回避策はありますが(Plunkerで)このコメントで説明https://github.com/angular/angular/issues/4112#issuecomment-153811572

+1

'injector:コンストラクタパラメータとしてのインジェクタ。これを使ってインスタンスをリクエストすることができます( 'injector.get(SomeType)'だと思います)。あるいは、子インジェクタを作成することができます。私は電話でしかないので、詳細はありません。 –

+0

ありがとうございますガンター – tymspy

関連する問題