2016-09-30 49 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