2016-09-30 51 views
1

工作我使用angular2內置管百分之我的HTMLAngular2管不輸入

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

其工作&顯示正確的數據輸入框,但是當我改變一個場管的值不工作。

如何解決這個問題?

回答

1

您已對_note.StudentPercent輸入的更改重新應用您的模型值篩選。你可以使用ngModelChange處理程序。

<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" /> 

代碼

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

越來越異常:不能有一個動作表達的管道。 – srashtisj

+0

@srashtisj我猜你不能直接在事件動作上使用'Pipes',基本上你需要調用組件的方法並在組件內部做這件事,然後像'(ngModelChange)=「_note.StudentPercent = doApplyPipe(_note .StudentPercent)「'&doApplyPipe'將返回結果 –

+0

是的!但如果我使用這種方法,我必須在保存時轉換該值。如0.24 => 24.00000%,然後節省24.00000%=> 0.24000 ...是否有任何其他方法使用管道? – srashtisj