Ошибка: InvalidPipeArgument: «undefined не является числом» для канала «DecimalPipe» - PullRequest
0 голосов
/ 17 марта 2020

У меня есть этот вход: <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());
  }

Что не так?

Angular версия: 7.3.9

1 Ответ

0 голосов
/ 17 марта 2020

Сначала вы должны объявить данные. Например:

...
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" />
...