ngOnInit против ionViewDidLoad в ионном 2 или ионном 2+

Какой из них я буду использовать для инициализации данных и почему?

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

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

Ответ 1

ngOnInit - это крючок жизненного цикла, называемый Angular2, чтобы указать, что Angular выполняется с созданием компонента.

ionViewDidLoad связан с событиями Ionic NavController lifeCycle. Он запускается при загрузке страницы. Это событие происходит только один раз на каждую страницу.

В принципе, оба являются хорошими местами для инициализации данных компонента.

Но для использования ngOnInit вам необходимо реализовать класс Angular OnInit С другой стороны, ionViewDidLoad может быть определен только для компонентов, которые вытолкнули/выскочили из NavController.

Поэтому я бы сказал, что ionViewDidLoad для компонентов в стеке NavController и ngOnInit для других компонентов.

Ответ 2

Обе функции работают одинаково, они вызываются, когда представление первоначально загружается в DOM.

Отличный блог об крюках жизненного цикла ionic2s здесь.

Ответ 3

Инициирование ionViewDidLoad близко связано с NavController.

Если вам нужен крючок для компонента, который визуализируется независимо от NavController (не все компоненты в приложении с ионным 2 - страницы), вы должны использовать angular крючки жизненного цикла вместо ионные навигационные крючки.

Теперь, какой из них подходит для вас, это зависит от случая реализации.

В любом случае имена всех этих крючков в большинстве случаев являются самоочевидными.