Оба метода используются в Angular компонентах, но имеют принципиально разные назначения и время выполнения.
export class MyComponent {
constructor() {
// Код конструктора
}
}
Назначение:
Когда выполняется:
Особенности:
export class MyComponent implements OnInit {
ngOnInit() {
// Код инициализации
}
}
Назначение:
Когда выполняется:
Особенности:
Характеристика | constructor | ngOnInit |
---|---|---|
Тип | Классовый конструктор | Хук жизненного цикла |
Время выполнения | Очень рано | После инициализации Input-свойств |
Доступ к Inputs | Нет | Да |
Angular-специфика | Нет | Да |
Рекомендуемое использование | Внедрение зависимостей | Инициализационная логика |
@Component({
selector: 'app-example',
template: ````{{value}}````
})
export class ExampleComponent implements OnInit {
@Input() value: string;
constructor(private service: DataService) {
// this.value будет undefined
this.service.getConfig(); // OK - инициализация сервиса
}
ngOnInit() {
// this.value содержит актуальное значение
this.service.loadData(this.value); // Правильное место для логики инициализации
}
}