データの初期化にはどちらを使用しますか?その理由は?
ngOnInit() {
this.type = 'category';
this.getData();
this.setData();
}
ionViewDidLoad() {
this.type = 'category';
this.getData();
this.setData();
}
ngOnInit
は、Angularがコンポーネントの作成を完了したことを示すために、Angular2によって呼び出されるライフサイクルフックです。
ionViewDidLoad
は、IonicのNavController
ライフサイクルイベントに関連しています。ページが読み込まれたときに実行されます。このイベントは、作成されるページごとに1回だけ発生します。
基本的に、どちらもコンポーネントのデータを初期化するのに適した場所です。
ただし、ngOnInit
を使用するには、AngularのOnInit
クラスを実装する必要があります。一方、ionViewDidLoad
は、NavController
からプッシュ/ポップされるコンポーネントに対してのみ定義できます。
したがって、ionViewDidLoad
スタック内のコンポーネントにはNavController
を使用し、他のコンポーネントにはngOnInit
を使用すると言います。
ionViewDidLoadの起動は、NavControllerと密接に関連しています。
NavControllerから独立してレンダリングされるコンポーネントのフックが必要な場合(ionic 2アプリのすべてのコンポーネントがページではない)、-の代わりに angular lifecycle hooks を使用する必要があります ionic navcontroller hooks 。
さて、どれがあなたに適しているかは、実装のケースに依存します。
とにかく、これらすべてのフックの名前はほとんどの場合自明です。
どちらの関数も同じように機能し、ビューが最初にDOMにロードされるときに呼び出されます。
Ionic2sライフサイクルフックに関する素晴らしいブログ ここ 。