gpt4 book ai didi

angular - 当用户在 Angular 2 的 View 中更改某些内容时如何检测组件的更改?

转载 作者:太空狗 更新时间:2023-10-29 17:57:40 27 4
gpt4 key购买 nike

当假设用户更改了输入类型的值(例如单选按钮、输入文本、输入文本区域等)时,我正在尝试检测变化

<input type="text" pInputText [(ngModel)]="mileage"/>

我不想使用 (ngModelChange)="detectChanges($event)"来检测更改,因为我需要使其通用,以便我可以用于整个组件的输入类型

最佳答案

<form #myForm>
<input type="text" pInputText [(ngModel)]="mileage" name="xxx"/>
...
</form>
class MyFormComponent {
@ViewChild('myForm') myForm:NgForm;

ngAfterViewInit() {
this.myForm.valueChanges.subscribe(val => console.log(val));
}
}

https://angular.io/docs/ts/latest/cookbook/form-validation.html#!#template2示例中也使用了此方法。

您还可以使 mileage 成为 getter/setter,然后您可以将代码放入值更改时执行的 setter,但这需要为输入绑定(bind)到的每个属性完成.

还可以添加

@HostListener('change', ['$event'])
onChange(e) {
console.log(e);
}

@HostListener('input', ['$event'])
onInput(e) {
console.log(e);
}

您需要为您可能感兴趣的每个事件添加一个监听器。浏览器之间存在一些差异,它们针对什么编辑操作触发什么事件。 ngModel 抽象出一些您可能需要自行处理的差异。

关于angular - 当用户在 Angular 2 的 View 中更改某些内容时如何检测组件的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39890267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com