1. ホーム
  2. angular

[解決済み] NgModuleにおける宣言、プロバイダ、インポートの違いは何ですか?

2022-03-20 23:21:06

質問

Angular(Angular2+と呼ばれることもある)を理解しようとしているとき、次のようなものに出くわした。 @Module :

  1. 輸入品

  2. 宣言

  3. プロバイダー

以下 Angularクイックスタート

解決するには?

Angularのコンセプト

  • imports 他のモジュールのエクスポートされた宣言を現在のモジュールで利用できるようにします。
  • declarations は、現在のモジュールのディレクティブ (コンポーネントやパイプを含む) を、現在のモジュールの他のディレクティブが使用できるようにするためのものです。ディレクティブ、コンポーネント、パイプのセレクタは、それらが宣言されているか、インポートされている場合にのみ、HTMLに対してマッチングされます。
  • providers は、サービスや値をDI(依存性注入)で知らしめるためのものです。ルートスコープに追加され、それらを依存関係に持つ他のサービスやディレクティブにインジェクションされます。

の特殊なケースとして providers は、遅延ロードされたモジュールで、それ自身の子インジェクタを取得します。 providers は、デフォルトではこの遅延ロードされたモジュールにのみ提供されます (他のモジュールと同様にアプリケーション全体には提供されません)。

モジュールの詳細については、以下を参照してください。 https://angular.io/docs/ts/latest/guide/ngmodule.html

  • exports に追加したモジュールで、コンポーネント、ディレクティブ、パイプを利用できるようにします。 imports . exports は、CommonModule や FormsModule など、共有モジュールでよく行われるモジュールの再エクスポートにも使用できます。

  • entryComponents で使用できるように、オフラインコンパイル用にコンポーネントを登録します。 ViewContainerRef.createComponent() . ルータ設定に使用されるコンポーネントは暗黙のうちに追加されます。

TypeScript (ES2015) のインポート

import ... from 'foo/bar' (どの に解決されるかもしれません。 index.ts はTypeScriptのインポート用です。他のTypescriptファイルで宣言されている識別子をTypescriptファイル内で使用する場合は、常にこれらが必要です。

Angularの @NgModule() imports とTypeScript import 全く異なる概念 .

参照 jDriven - TypeScriptおよびES6インポート構文

<ブロッククオート

そのほとんどは、実はTypeScriptも使っている素のECMAScript 2015(ES6)モジュール構文なのです。