2016-07-14 8 views
1

Ich bin mir sicher, dass dies möglich ist, aber ich habe es nicht in der Dokumentation gesehen.Angular2 rc4 ngModelChange onchange anstelle von Tastendruck

Ich möchte etwas() unten auf dem Onchange-Ereignis des Eingangs, nicht jedes Mal ausgelöst werden, wenn eine Taste gedrückt wird. wie, wie Knockout es standardmäßig macht.

<input [ngModel]="whatever" (ngModelChange)="something($event)"> 

Ich weiß, ich kann die Tastenanschläge entprellen, aber ich hoffe, das zu vermeiden. danke!

+0

ich eine Eingabekomponente am Ende machen, die verwendet (change) und (blur) und vergleicht dann die Modellversion mit der ursprünglichen Version und feuert eventemitter ab, wenn es einen Unterschied gibt ... und es muss (ändern) und (blur) oft feuern, Rücken-an-Rücken, so ist es ziemlich ein Workaround. –

Antwort

0

ich ein lokales Template-Variable vorschlagen den neuen Wert zu übergeben:

<input #input [ngModel]="whatever" (change)="something(input.value)"> 
<br>{{whatever}} 

Dann das Modell aktualisiert gegebenenfalls in den Event-Handler:

something(newValue) { 
    console.log(newValue); 
    this.whatever = newValue; // maybe conditionally update this 
} 
+0

Ja, ich weiß über (ändern) und (Unschärfe) (ich musste beide verwenden, um es zur Arbeit zu bringen), ich hoffte nur, es gab eine angular2 ngModelChangeStrategy oder etwas, wo es eingestellt werden könnte, um zu drücken oder zu ändern (a la knockout) –

+0

@mookietheswede, mir ist keine Möglichkeit bekannt, das ngModelChange-Verhalten zu ändern. –

Verwandte Themen