首页 > 解决方案 > 错误:InvalidPipeArgument:管道“DecimalPipe”的“未定义不是数字”

问题描述

我有这个输入: <input class="number " type= "text" pInputText [readonly]="" formControlName="id" [required]="" plmNumberFormatter [value]="data?.id | numberPipe" />

将光标放在输入上时,我得到未定义为输入中的值。

这是我的 TS:

ngOnInit() {
    this.form = this.createForm();
    this.keys.split(',').forEach(item => {
      set(this.data, item, null);
    });

这是我的管道:

transform(value: number | string, fractionSize?: number): string {
      const numberValue = transformToNumber(value, this.profile.getCurrentProfile());
    let retNumber = Number(numberValue);
      return this.decimalPipe.transform(retNumber,  this.profile.getDigitsInfo(), this.profile.getLocale());
  }

怎么了?

角度版本:7.3.9

标签: angulartypescriptpipe

解决方案


您应该首先声明数据。如下所示:

...
public data: object = {}
...

constructor() {
    this.form = this.createForm();
    this.keys.split(',').forEach(item => {
        set(this.data, item, null);
    });
    this.data = { ...this.data };
}

请注意,您没有创建对数据对象的新引用。Angular 会寻找参考变化,因此创建一个新参考很重要。

html:

<input class="number " type= "text"  pInputText [readonly]="" formControlName="id" [required]="" plmNumberFormatter [value]="data.id | numberPipe" />

推荐阅读