constructor
метод класса (или TypeScript в данном случае) - это особенность самого класса, а не угловая особенность. Angular не может контролировать, когда вызывается конструктор
конструктор вызывается, когда создается новое мгновение класса, но это
не означает, что угловая отделка завершена, компонент и связка
import { Component, OnInit } from '@angular/core';
@Component({})
class ExampleComponent implements OnInit {
constructor() {}
// called on demand by Angular
ngOnInit() {
console.log('ngOnInit fired');
}
}
const instance = new ExampleComponent();
// Angular calls this when necessary
instance.ngOnInit();
Обратите внимание, что движок JavaScript вызывает конструктор, а не Angular напрямую. Вот почему был создан хук жизненного цикла ngOnInit (и $ onInit в AngularJS).
ngOnInit
просто для того, чтобы дать нам сигнал о том, что Angular завершил инициализацию компонента.
Эта фаза включает в себя первый проход в Обнаружении изменений свойств, которые мы можем связать с самим компонентом, таких как использование декоратора @ Input()
.
В связи с этим свойства @Input () доступны внутри ngOnInit, однако undefined
внутри конструктора
Хук жизненного цикла ngOnInit является гарантией того, что ваши привязки
легко доступны.
из документа
Инициализировать директиву / компонент после того, как Angular впервые отобразит
привязанные к данным свойства и устанавливает ввод директивы / компонента
свойства. Вызывается один раз, после первого ngOnChanges ().
Последовательность жизненного цикла
- ngOnChanges ()
- ngOnInit ()
- ngDoCheck ()
- ngAfterContentInit ()
- ngAfterContentChecked ()
- ngAfterViewInit ()
- ngAfterViewChecked ()
toddmotto - Угловой конструктор против ngOnInit
Существенная разница между Constructor и ngOnInit в Angular