#angular #typescript
#angular #машинописный текст
Вопрос:
Я опробовал привязку жизненного цикла к изменениям, см.https://angular.io/guide/lifecycle-hooks#onchanges
Отвечать, когда Angular (повторно) устанавливает входные свойства, привязанные к данным
Теперь мой вопрос: возможно ли запустить его для не-входных свойств, которые меняют свое значение в html? Почему это не работает следующим образом?
У меня есть эти файлы:
HTML
<html>
<input ([ngModel])="power"></input>
<OnChangesTestComponent [power]="power"></OnChangesTestComponent>
</html>
HtmlComponent:
export class HtmlComponent implements {
power: string;
@ViewChild(OnChangesComponent) childView: OnChangesComponent;
}
OnChangesTestComponent:
export class OnChangesTestComponent implements OnChanges {
@Input() power: string;
ngOnChanges(changes: SimpleChanges) {
...
}
}
который я хочу подвести в:
HTML
<html>
<input ([ngModel])="power"></input>
</html>
HtmlComponent
export class HtmlComponent implements OnChanges {
power: string;
ngOnChanges(changes: SimpleChanges) {
...
}
}
Комментарии:
1. вам нужно
doCheck
для общей грязной проверки,onChanges
только для изменений ввода2.Будьте осторожны, используя
doCheck
@ABOS. Я бы рекомендовал использовать его в качестве последнего ресурса.While the ngDoCheck() hook can detect when the hero's name has changed, it has a frightful cost
angular.io/guide/lifecycle-hooks#docheck3. @ABOS Хорошо пытался избежать использования doCheck, поскольку он вызывается, даже если изменений не было..
4. @LeandroLima, я не думаю, что производительность является проблемой. обычно вы проверяете изменения простым if (…..) , я не думаю, что вызов этого в целом является дорогостоящим