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), иначе конструктора будет достаточно...

Другие вопросы по тегам