2017-01-09 26 views
6

Czy ktoś może mi powiedzieć, jaka jest najlepsza metoda porównywania starej i nowej wartości ngModel?Angular 2 ngModelChange stara wartość

W kątowej 1:

$scope.$watch('someProperty', funciton(oldVal, newVal){ 
    // code goes here 
}) 

Pytam, bo to nigdy nie przynosi (ngModelChange) mi oldVal, tylko newVal.

W moim przypadku używam ngModel w <select> tagu i porównać starą wybór z nową:

<select [(ngModel)]="current" (ngModelChange)="onModelChange($event)"> 
    <option *ngFor="let item of myArray" [ngValue]="item">{{item.name}} </option> 
</select> 

Odpowiedz

6

ten może działać

(ngModelChange)="onModelChange(oldVal, $event); oldVal = $event;" 

lub

(ngModelChange)="onModelChange($event)" 
oldValue:string; 
onModelChange(event) { 
    if(this.oldValue != event) { 
    ... 
    } 
    this.oldValue = event; 
} 
+0

Próbowałem tego, ale parametr oldVal jest niezdefiniowany. Używam tego porównania w tagu znacznika (patrz moja edycji postu). chyba (focus) nie ma już znaczenia. czy możesz napisać przykład z tagiem select? –