2016-02-28 3 views
4

Я просто пытаюсь выяснить, какая разница между конструктором и функцией onInit находится в директиве в Angular2. Мне кажется, что оба они используются, когда объект создан, так почему бы вам не только использовать конструктор?Директива Angular2, конструктор vs onInit

+0

Посмотрите на это http://stackoverflow.com/a/35763811/5043867 –

ответ

3

Первый (конструктор) связан с созданием класса и не имеет ничего общего с Angular2. Я имею в виду, что конструктор может использоваться для любого класса. Вы можете добавить в него некоторую обработку инициализации для вновь созданного экземпляра.

Вторая соответствует жизненному циклу крючок компонентов Angular2:

  • ngOnChanges называется, когда входное или выходная привязка значение изменяется
  • ngOnInit вызывается после первого ngOnChanges

So вы должны использовать ngOnInit, если обработка инициализации зависит от привязок компонента (например, параметры компонента, определенные с помощью @Input), в противном случае конструктора было бы достаточно ...

+0

Так есть причина не всегда использовать onInit? – theva

+0

Например, если вы хотите использовать инъецированные объекты, не устанавливая их как свойства класса ... –

+0

Инъекция выполняется на уровне конструктора. Но использование ngOnInit для других инициализаций прекрасно ;-) –

Смежные вопросы