Angular2 ngModelChange以前的值

时间:2016-10-21 08:56:26

标签: angular angular2-ngmodel

有没有办法在ngModelChange上获取字段的上一个(最后一个)值? 我的东西是这样的

HTML

<input type="text" [(ngModel)]="text" (ngModelChange)="textChanged($event)">

处理程序

private textChanged(event) {
    console.log('changed', this.text, event);
}

我得到的是

changed *newvalue* *newvalue*

当然我可以使用另一个变量保留旧值,但有更好的方法吗?

4 个答案:

答案 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)">

通过这种方式,您可以知道上一个值和下一个值