ввод числа 11 десятичных знаков с вертикальной чертой не позволяет число › 999

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"

все числа должны работать до 15 цифр с плавающей запятой, потому что js 64-битный. Что я делаю не так?


person Andreas Owen    schedule 23.03.2019    source источник


Ответы (1)


проблема в том, что DecimalPipe добавляет символ , после тысяч, как здесь 1,000, и в вашем коде этот маленький плюс здесь +new преобразует результат обратно в число. эта запятая делает его неразборчивым, и в результате вы получаете NaN. чтобы исправить проблему для представления, просто удалите знак плюса и, если вам нужно значение, используйте его без канала

person Andrei    schedule 23.03.2019