Хук ngOnChanges в Angular
Хук
ngOnChanges
работает при изменении дочернего компонента
родительским
Реагирует, когда Angular устанавливает или сбрасывает привязанные к данным свойства ввода. Метод получает объект SimpleChanges с текущим и предыдущим значениями свойств. Это происходит часто, поэтому любые операции, выполняемые здесь, существенно влияют на производительность. Вызывается перед ngOnInit() (если у компонента есть связанные входы) и всякий раз, когда одно или несколько связанных с данными входных свойств изменяются. Если у вашего компонента нет входов или вы используете его, не предоставляя никаких входов, фреймворк не будет вызывать ngOnChanges().
export class AppComponent {
public name: string = '111'
meth() {
this.name = '222';
}
}
<app-user [name]="name"></app-user>
<button (click)="meth()">button</button>
Метод ngOnChanges автоматически
вызывается при изменении свойств компонента.
Он срабатывает перед инициализацией компонента,
т.е. перед методом ngOnInit.
При этом в методе можно получить
текущее и предыдущее значение
измененного свойства класса компонента.
Для этого нужно в метод ngOnChanges
передать параметр SimpleChanges.
В этом случае перед работой с данным методом нам необходимо импортировать следующие интерфейсы и компоненты:
import {OnChanges, SimpleChanges } from '@angular/core';
export class UserComponent implements OnChanges {
@Input()
public name: string = ''
ngOnChanges(changes: SimpleChanges) {
let data = changes['name']; // имя свойства
let curr = data.currentValue;
let prev = data.previousValue;
console.log('changes', prev, curr);
}
}