34

ngModelChange のフィールドの前の (最後の) 値を取得する方法はありますか? 私が持っているものはこのようなものになります

HTML

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

ハンドラ

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

私が得るものは

changed *newvalue* *newvalue*

もちろん、別の変数を使用して古い値を保持することもできますが、もっと良い方法はありますか?

4

4 に答える 4

42

あなたができることは、

デモ : 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 
}
于 2016-10-21T09:01:51.540 に答える
31

そのため、問題のコードの変更を最小限に抑えて、これに対する奇妙な(少なくとも私にとっては)可能な解決策を見つけました。したがって、取得(ngModelChange)する前に属性を割り当てる[(ngModel)]と、同じハンドラーで次のようになります。

changed *older value* *new value*

次のように新しい値を取得しますthis.text

setTimeout(() => console.log(this.text), 0);
于 2016-10-21T11:42:41.857 に答える
2
<input (ngModelChange)="preTextChanged($event)" [(ngModel)]="text" (ngModelChange)="postTestChanged($event)">

このようにして、前の値と次の値を知ることができます

于 2019-05-22T15:04:30.537 に答える