Проблема 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)