Angular2将数字绑定到输入时间

时间:2016-11-04 16:58:11

标签: angular typescript time binding

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

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

我的timeToNumber管道转换字符串&#34; HH:mm:ss&#34;到秒。但它不起作用,因为输入不能接受数字类型。 我怎么能设法做到这一点?

1 个答案:

答案 0 :(得分: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()的示例。