【发布时间】:2018-01-31 22:17:15
【问题描述】:
This question 是关于在用户将数据输入数字类型的输入时限制/验证输入。
我遇到的问题是,当模型首次加载时,任何整数或 1dp 的数字都只会以 1dp 呈现。例如 40 或 40.0 都显示为 40.0(而不是 40.00)。
我已添加此代码,以便在用户键入新值后,它会以 2dp 显示:
在模板文件中:
(change)="setTwoNumberDecimal($event)"
在组件文件中:
setTwoNumberDecimal($event) {
$event.target.value = parseFloat($event.target.value).toFixed(2);
}
这适用于在用户更改值之后显示 2dp。
我尝试编写一个指令,该指令在数据最初加载时应格式化为 2dp,但尽管该指令确实会触发,但它不会将值更改为 2dp。
import { Directive, ElementRef, Input, Renderer2 } from '@angular/core';
@Directive ({
selector: '[fbDecimalFormat]'
})
export class DecimalFormatDirective {
constructor(private el: ElementRef,
private renderer: Renderer2) {
//renderer.setAttribute(el, 'value', parseFloat(el.nativeElement.value).toFixed(2));
this.el.nativeElement.value = parseFloat(this.el.nativeElement.value).toFixed(2);
}
}
仅供参考,注释的渲染行不起作用(错误:setAttribute not recognized) - 这是一个独立于平台的尝试。
所以问题是: 如何获取输入以 2dps 呈现其初始值?
【问题讨论】: