ライフサイクルフック
Angularに限らず、多くのViewフレームワークには「ライフサイクル」という考え方がある。これはViewの生成から破棄までの状態遷移を定義したもので、あらゆるView要素を同じライフサイクルで管理することで、効率的かつ拡張しやすいView構造としている。
「拡張しやすさ」を生み出すために、Viewの各ライフサイクルに処理を挿入することができる。これをライフサイクルフックといい、多くのViewフレームワークで標準的に備わっている機能となる。
Angularでは、Viewを管理するComponentにおいて、ライフサイクルフックが可能になっている。
Angular Component のライフサイクル
ngOnXXX を購読するには
それぞれ対応するInterfaceが用意されているので、Component内でそれを実装すればよい。
呼び出しはAngularが勝手に行ってくれる。
export class ComponentOverviewComponent implements OnInit {
ngOnInit(): void {}
}
ngOnDestroy は最後の砦
ngOnDestroyはコンポーネントを削除する際のファイナライザのような役割をもち、コンポーネント内で利用しているリソースの後始末を行う必要がある(それを怠るとメモリリークとなり、パフォーマンスに大きな影響を与える)
代表的なものは以下
- DOM要素へのイベントハンドラ(onClickなど)
- Promiseなどのコールバックオブジェクトの登録
- Observable要素の購読
- タイマーの停止