開発者ドキュメント

Angularのライフサイクルフック

Angularには8つのフックがあり、コンポーネントのライフサイクルを利用して、ライフサイクルの特定のポイントでアクションをトリガーできます。

この投稿では、Angular2以降のライフサイクルフックについて説明します。

使用可能なライフサイクルフックを、呼び出された順序で次に示します。

ngOnInit

ngOnInitフックを使用した簡単な例を示しましょう。 ngOnInit ライフサイクルフックは、おそらく最も頻繁に使用するフックです。 コンポーネントの作成時に実行する処理が多い場合は、コンストラクターではなくngOnInitフックで実行することをお勧めします。

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
  constructor() {}

  ngOnInit() {
    this.setupData();
    this.doStuff();
    // ...
  }

  setupData() {
    // ...
  }

  doStuff() {
    // ...
  }
}

OnInit をインポートする方法に注意してください。ただし、ngOnInitメソッドを使用して実装しています。 これは、他のライフサイクルフックについても同じ原則です。

複数のライフサイクルフック

複数のフックの実装も同様に簡単です。

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html'
})
export class AppComponent implements OnInit, OnDestroy {
  constructor() {}

  ngOnInit() {
    console.log('Component Init');
  }

  ngOnDestroy() {
    console.log('Component Destroy');
  }
}

ngOnChanges

SimpleChanges オブジェクトを持つngOnChangesフックは、少し異なります。 実装方法は次のとおりです。 次のように使用されるコンポーネントがあるとします。

<my-todo [title]="title" [content]="content"></my-todo>

ここで、titleプロパティが変更されたときに何かを実行したいとします。

子コンポーネント:my-todo.component.ts
import { Component, Input, SimpleChanges, OnChanges }
  from '@angular/core';

@Component({
  // ...
})
export class MyTodoComponent implements OnChanges {
  @Input() title: string;
  @Input() content: string;
  constructor() { }

モバイルバージョンを終了