Angular 2-компонентный конструктор против OnInit
Если я хочу, чтобы функция x выполнялась каждый раз при загрузке компонента, будь то в первый раз, я перехожу на другой сайт и возвращаюсь назад, или это уже пятый раз, когда компонент загружается.
Что я должен поставить функцию х в? Компонент конструктора или OnInit?
3 ответа
Конструктор - это предопределенный метод по умолчанию для класса машинописного текста. Между Angular и constructor
, Обычно мы используем constructor
определить / инициализировать некоторые переменные, но когда у нас есть задачи, связанные с привязками Angular, мы переходим к Angular ngOnInit
крючок жизненного цикла. ngOnInit
вызывается сразу после вызова конструктора. Мы также можем сделать ту же работу в конструкторе, но ее предпочтительнее использовать ngOnInit
начать привязку Angular.
для того, чтобы использовать ngOnInit
мы должны импортировать этот хук из основной библиотеки:
import {Component, OnInit} from '@angular/core'
Затем мы реализуем этот интерфейс с экспортированным классом (это не обязательно для реализации этого интерфейса, но в целом мы это сделали).
Пример использования обоих:
export class App implements OnInit{
constructor(){
//called first time before the ngOnInit()
}
ngOnInit(){
//called after the constructor and called after the first ngOnChanges()
}
}
Для более подробной информации смотрите также Разница между Конструктором и ngOnInit.
constructor()
является функцией машинописи и вызывается для new SomeClass()
, Конструктор обеспечивает правильный порядок инициализации полей в иерархиях классов.
ngOnInit
это метод жизненного цикла Angular2, который вызывается Angular, когда он завершает сборку компонента и после того, как он оценил привязки и обновил входные данные в первый раз.
Смотрите также Разница между Конструктором и ngOnInit
Первый (конструктор) связан с реализацией класса и не имеет ничего общего с Angular2. Я имею в виду, что конструктор можно использовать в любом классе. Вы можете поместить в него некоторую обработку инициализации для вновь созданного экземпляра.
Второй соответствует хуку жизненного цикла компонентов Angular2:
ngOnChanges
вызывается при изменении значения привязки ввода или выводаngOnInit
называется после первогоngOnChanges
Так что вы должны использовать ngOnInit
если обработка инициализации вашей функции опирается на привязки компонента (например, параметры компонента, определенные с помощью @Input
), иначе конструктора будет достаточно...