[解決済み] コンストラクタとngOnInitの違いについて
質問
Angularが提供するライフサイクルフック
ngOnInit
をデフォルトで使用します。
なぜ
ngOnInit
を使用します。
constructor
?
解決方法は?
その
Constructor
はクラスのデフォルトメソッドで、クラスのインスタンスが作成されたときに実行され、クラスとそのサブクラスのフィールドが適切に初期化されるようにします。Angular、もしくはより優れた依存性インジェクタ(DI)はコンストラクタのパラメータを分析し、新しいインスタンスを作成する際に
new MyClass()
のように、コンストラクタのパラメータの型にマッチするプロバイダを探して解決し、それをコンストラクタに渡します。
new MyClass(someArg);
ngOnInit
は、Angularがコンポーネントの作成を終了したことを示すためにAngularによって呼び出されるライフサイクルフックです。
をインポートする必要があります。
OnInit
を使用するために、このようにします(実際に実装するのは
OnInit
は必須ではありませんが、グッドプラクティスと考えられています)。
import { Component, OnInit } from '@angular/core';
というメソッドを利用することで
OnInit
ということで、このようなクラスを実装する必要があります。
export class App implements OnInit {
constructor() {
// Called first time before the ngOnInit()
}
ngOnInit() {
// Called after the constructor and called after the first ngOnChanges()
}
}
このインターフェイスを実装すると、ディレクティブのデータバインドプロパティが初期化された後に、カスタマイズされた初期化ロジックを実行することができます。 ngOnInit は、ディレクティブのデータバウンドプロパティが初めてチェックされた直後に呼び出されます。 であり、子プロセスがチェックされる前である。 これは、ディレクティブがインスタンス化されたときに一度だけ実行されます。
ほとんどの場合、私たちは
ngOnInit
はすべての初期化/宣言に使用し、コンストラクタで動作するものを避けています。コンストラクタはクラスのメンバを初期化するためだけに使用されるべきで、実際の作業やquot;work"を行うべきではありません。
そのため
constructor()
ngOnInit()は、コンポーネントのバインディングが解決される場所/時であるため、"start"するのに良い場所です。
詳しくはこちらをご覧ください。
関連
-
[解決済み】アンギュラーコンポーネントにサービスを注入しようとするとエラー "EXCEPTION: Can't resolve all parameters for component"、なぜ?
-
Angularフレームワーク入門
-
[解決済み] コンストラクタとngOnInitの違いについて
-
[解決済み] formGroup' は 'form' の既知のプロパティではないため、バインドできません。
-
[解決済み] Angular/RxJS `Subscription` からいつ退会すればいいのか?
-
[解決済み] インデックスを属性値とするngFor
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み] NgModule.schemasにCUSTOM_ELEMENTS_SCHEMAを追加してもエラーが表示される。
-
[解決済み] viewchildを使用して複数のviewchildrenにアクセスする
-
[解決済み] ジョブ名「...getProjectMetadata」は存在しません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ionic 5 - ngForがデータを表示しない
-
[解決済み] Angularで@Input()の値が変更されたときに検出する方法は?
-
[解決済み] Angular 2の "select "で新しい選択範囲を取得するにはどうすればよいですか?
-
[解決済み] Angularアプリを本番用にバンドルする方法
-
[解決済み] SubjectとBehaviorSubjectの違いは何ですか?
-
[解決済み] 例外が発生しました。既知のネイティブプロパティではないため、'ngFor'にバインドできない
-
[解決済み] Angular CLI Error: serveコマンドはAngularプロジェクトで実行する必要がありますが、プロジェクト定義が見つかりませんでした。
-
[解決済み] Angularアプリケーションが本番モードと開発モードのどちらで動作しているかを確認する方法
-
[解決済み] AngularのINPUT要素でngModel内のパイプを使用する
-
[解決済み] エラーが発生しました。出力が初期化されていません