2016-11-04 69 views
1

我正在寻找一种方法来绑定我的数字属性到时间输入。 我想这样做,因为我的模型属性只能是类型编号。我想通过绑定将时间值转换为秒。 我试过这段代码:Angular2绑定数字到输入时间

<input type="time" step="1" [ngModel]="value.value | timeToNumber" (ngModelChange)="value.value = $event"> 

我timeToNumber管转换字符串 “HH:MM:SS” 到秒。但它不起作用,因为输入不能接受数字类型。 我该如何设法做到这一点?

回答

0

我想是因为类型的输入的元素之后调用 ngModelChange的无限循环中已经改变,这将导致调用管道“timeToNumber”这将导致ngModelChange再次叫你不能做这样..

您可以通过另存一个变量来解决它:例如“value.valueForm”,它将保持您的管道版本值“value.value”。

例如:

  <input type="time" step="1" placeholder="time in seconds.." name="myTime" #iTime #myTime="ngModel" 
        [ngModel]="value.valueForm" 
        (ngModelChange)="value.valueForm=onChange($event, iTime)" /> 


onChangeCash(eventStr: string, eRef): string { 
    var res = this.getNumberOnChange(eventStr, eRef); // gets current value of element using eRef. Pipe it and return new piped value as res. 
    this.value.value = this.getNumberOfStr(res); // gets new piped value as res and convert it to Model value you need to save. 
    return res; 
} 

对不起,不具有getNumberOnChange(),getNumberOfStr()的一个例子。