web-dev-qa-db-ja.com

ionic 2またはionic 2+のngOnInitとionViewDidLoad

データの初期化にはどちらを使用しますか?その理由は?

ngOnInit() {
    this.type = 'category';
    this.getData();
    this.setData();
}

ionViewDidLoad() {
    this.type = 'category';
    this.getData();
    this.setData();
}
27
saif

ngOnInitは、Angularがコンポーネントの作成を完了したことを示すために、Angular2によって呼び出されるライフサイクルフックです。

ionViewDidLoadは、IonicのNavControllerライフサイクルイベントに関連しています。ページが読み込まれたときに実行されます。このイベントは、作成されるページごとに1回だけ発生します。

基本的に、どちらもコンポーネントのデータを初期化するのに適した場所です。

ただし、ngOnInitを使用するには、AngularのOnInitクラスを実装する必要があります。一方、ionViewDidLoadは、NavControllerからプッシュ/ポップされるコンポーネントに対してのみ定義できます。

したがって、ionViewDidLoadスタック内のコンポーネントにはNavControllerを使用し、他のコンポーネントにはngOnInitを使用すると言います。

65
naomi

ionViewDidLoadの起動は、NavControllerと密接に関連しています。

NavControllerから独立してレンダリングされるコンポーネントのフックが必要な場合(ionic 2アプリのすべてのコンポーネントがページではない)、-の代わりに angular lifecycle hooks を使用する必要があります ionic navcontroller hooks

さて、どれがあなたに適しているかは、実装のケースに依存します。

とにかく、これらすべてのフックの名前はほとんどの場合自明です。

3
orouwk

どちらの関数も同じように機能し、ビューが最初にDOMにロードされるときに呼び出されます。

Ionic2sライフサイクルフックに関する素晴らしいブログ ここ

2
Marcus Höglund