大田区から発信するゆるゆる日記

主にITエンジニアに関する備忘録日記。たまに趣味も。何か不備があればコメント頂けると幸いです。Twitterアカウント https://twitter.com/ryuzan03

【Angular】NgModule

※下記の内容に不備がありましたら、コメント頂けると幸いです。また、下記の内容をご使用頂ける場合は自己責任でお願いします。

【目次】

NgModule

NgModuleとは?

インジェクターコンパイラを設定し関連するものをまとめています。 

@NgModuleデコレーターが付与されたクラスです。

 

NgModuleは、コンポーネント、ディレクティブやパイプを機能の密なブロックとしてまとめます。

 

FormsModule、HttpClientModuleやRouterModuleなどのAngularライブラリはNgModuleに該当します。

 

@NgModuleデコレーターとは?

@NgModuleデコレーターは、コンポーネントのテンプレートをコンパイルする方法、実行時にインジェクターを作成する方法が記述された「メタデータオブジェクト」を引数に取ります。

 

モジュール自身がもつコンポーネント、ディレクティブやパイプを識別し、この中のいくつかをexportsプロパティを通して公開し、外部コンポーネントから使用できるようにすることができます。

 

@NgModuleはアプリケーションの依存性の注入のためのサービスプロバイダーを加えることもできます。

 

@NgModuleデコレーターで利用できる主なパラメーターは、imports/exports/declarations/bootstrap/idです。

 

よく使用されるモジュール

Angular 日本語ドキュメンテーション

 

用語

コンストラクタ(constructor)

メソッドであり、インスタンスを作成するタイミングで実行される。

要は、クラスをnew(初期化)した瞬間に実行される関数のこと。

 

最初にしておかなければならない処理(例えばメンバ変数の初期化処理など)でよく活用されます。

 

Typescriptのコンストラクタの引数には、クラスのメンバ変数を同時に宣言して引数の値で初期化する「パラメータプロパティ宣言」機能が用意されています。

 

コンストラクタは省略可能。

省略した場合は、引数を持たない空の自動コンストラクタが提供される。

 

メンバ変数

オブジェクト指向における「属性」を定義したもの。

こちらがとてもわかりやすかったです。

[JavaScript] オブジェクトの基礎 - Qiita

 

※ちなみに、、、オブジェクトには「属性」とは他に「操作」の要素があり、メソッドはオブジェクトがどう動けるか(操作)を定義したものです。

 

デコレーター

クラスの宣言、メソッド、アクセサ、プロパティ、パラメーターに構成情報を結び付けられる(アタッチできる)特別な宣言の一種。

 

デコレーターは@expressionという形式で使い、実行時はexpressionとして関数を呼び出し、そのexpressionはデコレートされた宣言の情報を持ちます。

 

構成情報の構築は、パラメーターで行います。

例えば、上記でも書きましたが、@NgModuleデコレーターで利用できる主なパラメーターは、imports/exports/declarations/bootstrap/idです。

 

インジェクター

注入。依存性を管理(チェックや生成)します。

メソッドの引数で、クラスや変数などを外部から受け取れるようにすることです。

オブジェクトに必要な情報を外部から注入できる(inject)ようにします。

 

例えば、メソッドの引数でインジェクターを指定することで、他で指定したDIトークンを指定してどのProviderから変数などを注入してもらうか指定をする。

 

また、@Injectableデコレーターは、コンポーネントに対してクラスをサービスとして引き渡せることを意味します。

つまり、サービスクラスを作成するには、@Injectableデコレーターで修飾されていることが条件になります。

 

Angularでは依存性注入(DI)という言葉でよく使われる。

 

ディレクティブ

テンプレートから実際のHTMLを作成するときに、HTMLを作成する方法を指定すること。

標準的なHTMLに対して、独自の要素/属性を追加することで、ページに機能を付与している。この独自の要素/属性がディレクティブです。

 

Angularでは次の3種類がディレクティブに該当します。

コンポーネント

・構造ディレクティブ

・属性ディレクティブ

 

参考

素晴らしい記事に感謝いたします。

クラス | TypeScript 日本語ハンドブック | js STUDIO

TypeScript プログラミング - クラス - 宣言

https://wa3.i-3-i.info/word13646.html

https://wa3.i-3-i.info/word13563.html

Angular2 における Injector の話 - Dolpenの日記

TypeScriptのDecoratorについて – 公式ドキュメント日本語訳 | maesblog