有没有办法在ngModelChange上获取字段的上一个(最后一个)值? 我的东西是这样的
HTML
<input type="text" [(ngModel)]="text" (ngModelChange)="textChanged($event)">
处理程序
private textChanged(event) {
console.log('changed', this.text, event);
}
我得到的是
changed *newvalue* *newvalue*
当然我可以使用另一个变量保留旧值,但有更好的方法吗?
答案 0 :(得分:32)
你能做的是,
DEMO:http://plnkr.co/edit/RXJ4D0YJrgebzYcEiaSR?p=preview
<input type="text"
[ngModel]="text" //<<<###changed [(ngModel)]="text" to [ngModel]="text"
(ngModelChange)="textChanged($event)">
private textChanged(event) {
console.log('changed', this.text, event);
this.text=event; //<<<###added
}
答案 1 :(得分:21)
所以发现有点奇怪(至少对我来说)可能的解决方案,而且代码中的代码变化最小。因此,在(ngModelChange)
之前分配[(ngModel)]
属性后,我得到的是同一个处理程序:
changed *older value* *new value*
我在this.text
中得到了新值,如下所示:
setTimeout(() => console.log(this.text), 0);
答案 2 :(得分:7)
你需要做的就是放 (ngModelChange)=&#34;框TextChanged($事件)&#34; 在html标记的[(ngModel)]元素的左侧,如:
<input (whatever...) (ngModelChange)="textChanged($event)" [(ngModel)]="text">
这样,在textChanged(event)中,你绑定的元素仍然具有前一个值,而event是新的
答案 3 :(得分:0)
<input (ngModelChange)="preTextChanged($event)" [(ngModel)]="text" (ngModelChange)="postTestChanged($event)">
通过这种方式,您可以知道上一个值和下一个值