0

Angular 2 アプリ用に 3 つのサービスを作成しました。2 つが 3 つ目のアプリに挿入され、そこで使用されるように構成されています。2 つ (3 つとも で装飾されています@Injectable()) をインポートした後も、不明なプロバイダー エラーが発生しました。

それを解決するために、注入されたサービスをモジュールプロバイダー配列に配置しようとしましたが、うまくいきました。これは最善のアプローチですか?

Angular のドキュメントには、コンポーネント レベルでの注入可能オブジェクトのリストが示されています。すべてのインジェクタブルをモジュール プロバイダー配列に配置することはできますか?

すべてが各モジュールの中央の場所で構成されているため、これによりアプリケーションのセットアップが簡素化されるようです。コンポーネントごとにコンポーネントの依存関係を検索する必要はありません。

4

2 に答える 2

3

@NgModule.providersはい、サービスをアプリケーション スコープ (シングルトン) にする場合は、 に入れます。@Component.providersサービスがコンポーネント スコープ1である必要がある場合にのみ追加します (各コンポーネントは独自のインスタンスを取得する必要があります)。


1 -階層インジェクターも参照

于 2016-10-29T04:48:34.367 に答える
1

どのようなサービスを希望するかは、お客様の要件によって異なります。

シングルトン サービス

を使用する場合singleton serviceは、サービスを中央エリアのどこかに配置できます。でサービスを使用/配置する必要があると思うでしょうAppModule。ただし、真のシングルトン パターン/インスタンスを実現するには、CoreModule にサービスを配置/宣言する必要があります。CoreModule を使用して にインポートCoreModuleする方法を確認してくださいAppModule

複数インスタンス サービス

コンポーネントでサービスを宣言する@Component decoratorと、コンポーネントごとにサービスのインスタンスが異なります。

于 2016-10-29T04:59:47.377 に答える