1

次の状況を想像してください。コンポーネントAはサービスAの配列Aを更新します。コンポーネントBはサービスAの配列Aを使用/読み取ります。コンポーネントBに通知したい場合...コンポーネントAが配列を更新するときに、シングルトンを使用できますが、私の気持ちです。 ..(C#+ MVVMのバックグラウンドから来ています)シングルトンサービスは、アプリケーション内のこれら2つのコンポーネントでのみ使用されるため、やり過ぎです。

代替手段はありますか、それとも先に進んでシングルトン サービスを作成する必要がありますか?

どんなアドバイスでも大歓迎です、

ありがとうございました、

4

3 に答える 3

2

いいえ、それはまったくやり過ぎではなく、完全に慣用的な解決策のように思えます。

Angular2 サービスは (多くの場合) シングルトンです。

次の場合は、次のように理解しています。

  • サービスを装飾する@Injectable
  • サービスをproviders[] @NgModuleに追加し、
  • importサービスをコンポーネントに

そのサービスの同じ単一のインスタンスを共有する必要があります。

必要に応じて、Service をデコレーターのリストに含めることで、Service をコンポーネントのプロバイダーとして宣言できます。これにより、コンポーネントの Service の新しいインスタンスがインスタンス化されます。これは、状態を共有せずに機能を提供したい場合に便利です。@Componentprovider[]

これは、この動作に関する有益で陽気な記事です: https://blog.budacode.com/2016/06/02/angular-2-services/

于 2016-10-24T18:11:57.777 に答える
1

サービスを使用することは、これに対する「標準的な」Angular アプローチであり、msanford が指摘したように、それはまったく問題ありません。ng2 は非常に柔軟であるため、redux 実装 ( https://github.com/ngrx/storeなど) を使用するなど、他の方法を取ることもできます。

于 2016-10-24T18:15:57.823 に答える