Вместо использования ngOnChanges
, вы можете обнаружить изменения, используя setter
.
Вот что вам нужно сделать
@Input()
set myUpdatingVar(value: any) {
if(value) {
this.myFunc(value);
}
}
Он будет загружаться не только при инициализациипросматривать, но также всякий раз, когда что-то меняется в myUpdatingVar
, Angular запускает сеттер и выполняет вашу функцию.Кроме того, ngOnChanges
- это дорогой хук жизненного цикла.Если вы не используете его осторожно, он будет запускаться каждый раз, когда что-то изменяется в компоненте.
Но если вы хотите использовать ngOnChanges
, вам следует использовать обнаруженные в переменной изменения вместо использования переменнойсам.
Вот пример
ngOnChanges(changes: SimpleChanges): void {
if (changes.myUpdatingVar.currentValue === someValue) {
this.myFunc(changes.myUpdatingVar.currentValue);
} else {
this.myFunc(changes.myUpdatingVar.currentValue);
}
}
Вы можете проверить, является ли это первым изменением, а также получить currentValue
и previousValue
, что полезно в этом случае.
Надеюсь, мой ответ вам как-то помог.Удачного кодирования!