2016-09-30 2 views
1

Ich verwende angular2 eingebaute Rohr Prozent in meinem HTMLAngular2 Rohr arbeitet nicht für die Eingabe

<input class="ibox1 rightalign" type="text" [ngModel]="_note.StudentPercent| percent:'.5-5'" ngControl="StudentPercent" pattern="^[0-9]\d*(\.\d+)?$" #StudentPercent="ngForm"> 

seine Arbeits & korrekte Datenanzeige Eingabefeld, aber wenn ich den Wert eines Feldes Rohr ändert sich nicht Arbeit.

Wie löst man das?

Antwort

1

Sie haben bei Änderung des _note.StudentPercent Eingangs einen Filter auf Ihren Modellwert angewendet. Sie können ngModelChange Handler für das gleiche verwenden.

<input class="ibox1 rightalign" type="text" 
    [ngModel]="_note.StudentPercent| percent:'.5-5'" 
    (ngModelChange)="changeToPercent(_note.StudentPercent,'.5-5')" 
    ngControl="StudentPercent" pattern="^[0-9]\d*(\.\d+)?$" 
    #StudentPercent="ngForm" /> 

-Code

changeToPercent(percent, format){ 
    //make sure PercentPipe in declarations & providers of NgModule 
    this._note.StudentPercent = new PercentPipe().transform(percent, format) 
} 
+0

bekommen Ausnahme: Kann nicht ein Rohr in einer Aktion Ausdruck haben. – srashtisj

+0

@srashtisj Ich denke, Sie können 'Pipes' nicht direkt auf Event-Aktion verwenden, im Grunde brauchen Sie Call-Methode der Komponente & machen diese Sache innerhalb der Komponente und zuweisen zurück zum Modell wie' (ngModelChange) = "_ note.StudentPercent = doApplyPipe (_note .StudentPercent) "' & wo 'doApplyPipe' liefert Ergebnis –

+0

yeah! aber wenn ich diesen Ansatz verwende, muss ich den Wert konvertieren, wenn er gespeichert wird. wie zB 0,24 => 24,00000% und dann beim Speichern von 24,00000% => 0,24000 ... gibt es noch einen anderen Weg, Pipe zu benutzen? – srashtisj

Verwandte Themen