2017-04-21 17 views
1

[a]サービスの独自のインスタンスを作成する各コンポーネントがあるようです。なぜか分からない。角ダーツで複数のサービスインスタンスを避ける方法

私はこのAngularJs 2 - multiple instance of service createdに注意していますが、正しい解決策については明確ではありません。

void main() { 
    bootstrap(AppComponent,[MyService]); 
} 

、その後、(私もコンポーネントプロバイダからMyServiceを取り除くため)[子供]コンポーネントにコピー:私は、メインにサービスインスタンス_myServiceを作成していますか?これは正しくないと思われます。なぜなら、コンポーネントがインスタンス化される前に_myServiceを参照していて、nullであることを確認する必要があるからです。 (あなたには、いくつかのコンポーネントで再びそれを提供しない場合)、ブートストラップであなたのサービスを作成する

おかげ

スティーブ

答えて

1

hereのような工場コンストラクタパターンを使用できます。

0

はそれのインスタンスが1つだけのアプリのためにそこにあることを確認します。

@Componentに複数のコンポーネントを用意している場合にのみ、複数のコピーを取得します。コンポーネントの各インスタンス(およびそのすべての子)は、サービスのインスタンスを個別に持ちます。

+0

"サービスをブートストラップで作成すると、そのアプリケーションのインスタンスが1つしかないことが確認されます。" - それはしません。私はいくつかのintancesを取得します。そのため、コンポーネントプロバイダからMyServiceを削除すると、コンポーネントがブートストラップからインスタンスにどのようにアクセスしますか?ありがとう、s – Lymp

+0

DIはAngularのDOMツリーと密接に関連しています。もしあなたがアプリレベルで何かを提供すれば、どのコンポーネントもそれを注入できます。 – rkj

関連する問題