Angular 使用ngModel格式化输入中的数字
我有一个链接到包含相关数据的对象的输入:Angular 使用ngModel格式化输入中的数字,angular,Angular,我有一个链接到包含相关数据的对象的输入: <input type="text" [(ngModel)]="element.number" name="someName"> 元素是具有属性号的对象。数字是数字类型,它始终是整数 我想显示一个格式化的输入值(将秒转换成更易于阅读的格式)。假设元素。数字为140,显示值为00:02:20。如果元素.number为22,则显示的值为00:00:22。如果element.number为3670,则显示值为01:01:10,依此类推 如
<input type="text" [(ngModel)]="element.number" name="someName">
元素是具有属性号的对象。数字是数字类型,它始终是整数
我想显示一个格式化的输入值(将秒转换成更易于阅读的格式)。假设元素。数字为140
,显示值为00:02:20
。如果元素.number
为22,则显示的值为00:00:22
。如果element.number
为3670
,则显示值为01:01:10
,依此类推
如果用户将00:00:22
编辑为00:01:44
,则元素的编号将更新为104
对于应用程序需要的所有逻辑,元素.number
必须是整数。我该怎么做?我可以在表达式上使用管道吗?我应该将输入分成3个输入字段吗?我认为您需要更多地了解html5格式。试试这个:
<input type="time" step="1" />
工作地点:
试试这个:
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template: '
<div>
<p>The number is {{number}}</p>
<p>
<input type="number" [(ngModel)]="formattednumbers.hrs"
name="hrs" (change)="updateNumber()">:
<input type="number" [(ngModel)]="formattednumbers.mins"
name="mins" (change)="updateNumber()">:
<input type="number" [(ngModel)]="formattednumbers.secs"
name="secs" (change)="updateNumber()">
</p>
</div>
'
})
export class AppComponent {
number = 140;
formattednumbers: TimeFormatter;
constructor() {
this.formattednumbers = this.fancyTimeFormat(this.number);
}
fancyTimeFormat(time): TimeFormatter {
// Hours, minutes and seconds
const hrs = Math.floor(time / 3600);
const mins = Math.floor((time % 3600) / 60);
const secs = Math.floor(time % 60);
const ret = {
hrs: hrs,
mins: mins,
secs: secs
};
return ret;
}
updateNumber() {
const h2s = this.formattednumbers.hrs * 3600;
const m2s = this.formattednumbers.mins * 60;
const s = this.formattednumbers.secs;
this.number = h2s + m2s + s;
this.formattednumbers = this.fancyTimeFormat(this.number);
}
}
interface TimeFormatter {
hrs: number;
mins: number;
secs: number;
}
从'@angular/core'导入{Component};
@组成部分({
选择器:'应用程序根',
模板:'
号码是{number}
:
:
'
})
导出类AppComponent{
数字=140;
格式化的数字:TimeFormatter;
构造函数(){
this.formattednumbers=this.fancyTimeFormat(this.number);
}
fancyTimeFormat(时间):TimeFormatter{
//小时、分钟和秒
常数小时=数学楼层(时间/3600);
常数分钟=数学楼层((时间%3600)/60);
常数秒=数学下限(时间%60);
常数ret={
小时:小时,
分钟:分钟,
秒:秒
};
返回ret;
}
updateNumber(){
常数h2s=this.formattednumbers.hrs*3600;
const m2s=this.formattednumbers.mins*60;
常数s=this.formattednumbers.secs;
该数量=h2s+m2s+s;
this.formattednumbers=this.fancyTimeFormat(this.number);
}
}
接口时间格式化程序{
小时数:个;
分钟:数字;
秒:数字;
}
您可以对代码进行更多的重构,但我认为您的问题的答案就在这里:)