1. ホーム
  2. angular

[解決済み] Angular 2 コンポーネントコンストラクタとOnInitの比較 [重複]。

2023-02-04 09:03:54

質問

コンポーネントがロードされるたびに関数xが発生するようにしたい場合、それが初回であろうと、別のサイトに移動して戻ってきたときであろうと、コンポーネントがロードされるのが5回目であろうと。

関数xはどこに置けばいいのでしょうか?コンポーネント コンストラクタまたは OnInit?

どのように解決するのですか?

コンストラクタは、typescriptクラスの定義済みデフォルトメソッドです。Angularと constructor . 通常、私たちは constructor を使って変数を定義・初期化していますが、Angularのバインディングに関連するタスクがある場合は、Angularの ngOnInit のライフサイクルフックに移動します。 ngOnInit はコンストラクタ呼び出しの直後に呼び出されます。同じ作業をコンストラクタの中で行うこともできますが、より望ましいのは ngOnInit を使用してAngularのバインディングを開始することが望ましいです。

を使用するために ngOnInit を使うには、このフックをコアライブラリからインポートする必要があります。

import {Component, OnInit} from '@angular/core'

そして、このインターフェイスをエクスポートしたクラスで実装します(このインターフェイスの実装は必須ではありませんが、一般的にはこのようにします)。

両方を使った例です。

export class App implements OnInit{
  constructor(){
     //called first time before the ngOnInit()
  }

  ngOnInit(){
     //called after the constructor and called  after the first ngOnChanges() 
  }
}

より詳細には コンストラクタとngOnInitの違い