0

I need to load a number in input form but there is some problem when I format the number. In details the number can be :

1.99
15.00
230.88
2,999.00
etc

I use this code:

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

but it gives me this warning:

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

I use Angular 6. Anyone can help me?

Doflamingo19
  • 1,591
  • 4
  • 12
  • 32

1 Answers1

2

The first problem is caused by the comma. For any other reason another problem is that number : '1.2-2' does not take values larger 3 digits before comma.

I have create a stackblitz to show a possible solution:

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

Use a custom pipe to replace the , and to ensure number : '1.2-2' still valid. You can extend it by your need to solve any problem.

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;
  }
}

Advantage of custom pipe solution: You can customize your behavior. number : '1.2-2' unfortunately rounds the number, and even worse, there's no word about it in the documentation (found in the comments of this answer: https://stackoverflow.com/a/38478060/3623608)

Tommy
  • 2,355
  • 1
  • 19
  • 48