отформатировать число с двойной точностью - PullRequest
0 голосов
/ 02 октября 2018

Мне нужно загрузить число в форму ввода, но при форматировании числа возникает некоторая проблема.В деталях число может быть:

1.99
15.00
230.88
2,999.00
etc

Я использую этот код:

 [ngModel]="price |  number : '1.2-2' "

, но это дает мне это предупреждение:

The specified value "1,333.00" is not a valid number.

Я использую Angular 6Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 02 октября 2018

Проблема first вызвана запятой.По любой другой причине еще одна проблема заключается в том, что number : '1.2-2' не принимает значения больше 3 цифр перед запятой.

Я создал stackblitz , чтобы показать возможное решение:

<input type="number" [ngModel]="price | toNumber "/>

Используйте пользовательский канал, чтобы заменить , и убедиться, что number : '1.2-2' остается в силе.Вы можете расширить его, если вам необходимо решить любую проблему.

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'toNumber'
})
export class ToNumberPipe implements PipeTransform {
  transform(value: string):any {
    let retNumber = parseFloat(parseFloat(value.replace(/,/g, '')).toFixed(2))
    return isNaN(retNumber) ? 0 : retNumber;
  }
}

Преимущество нестандартного решения для трубы: Вы можете настроить свое поведение.number : '1.2-2' к сожалению, округляет число, и, что еще хуже, в документации нет ни слова об этом (см. В комментариях к этому ответу: https://stackoverflow.com/a/38478060/3623608)

...