【问题标题】:input number 11 decimals with pipe doesnt allow number > 999使用管道输入数字 11 位小数不允许数字 > 999
【发布时间】:2022-02-11 03:47:41
【问题描述】:

999.12345678901 有效,但任何 >= 1000 的值都会计算为 NaN(控制台中的警告)并将输入设置为 0。我在 onBlur 输入中使用此管道。

   @Pipe({
      name: 'rExact'
   })
   export class rExactPipe extends DecimalPipe {
        transform(value: number): any {
           if(isNaN(value))
               return null;

           return super.transform(value, "1.2-11");  
        }
  }

这是 onblur 事件:

this.selected.UnitPrice = +new rExactPipe(this.numberLocale).transform(this.selected.UnitPrice);

输入数字字段绑定如下:[(ngModel)]="selected.UnitPrice"

因为 JS 是 64 位的,所以所有数字都应该最多 15 位浮点数。我做错了什么?

【问题讨论】:

  • 无法复制:stackblitz.com/edit/…。发布一个完整的最小示例,就像我刚刚做的那样,但重现了问题。

标签: html angular input pipe decimal


【解决方案1】:

问题是 DecimalPipe 在数千个像这里 1,000 之后添加 , 符号,在你的代码中这个小加号 +new 将结果转换回数字。这个逗号使它无法解析,结果你得到 NaN。要解决视图的问题,只需删除加号,如果需要值,请在不使用管道的情况下使用它

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2011-10-21
    • 1970-01-01
    • 2014-02-01
    • 2022-11-22
    相关资源
    最近更新 更多