2

我有一个带有自定义管道的双向数据绑定。

我的输入文本字段代码:

<input type="text" [ngModel]="post.price | myCurrencyPipe" (ngModelChange)="post.price = $event" name="price" id ="price" (change)="itemPriceUpdate(post)"/>

和自定义管道代码:

@Pipe({ name: 'myCurrencyPipe'})
export class MyCurrencyPipe implements PipeTransform{

      transform(val:any) {
        var value = parseInt(data);
        var num = '$' + value.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
        return num;

      } 

当我去编辑我的输入字段值时,它在按键上显示 NaN。

4

1 回答 1

0

这是因为您的自定义管道$在其前面添加了字符。val在调用之前将其删除parseInt(data)将解决您的问题。

transform(val:any) {
  val = val.toString().replace(/[^0-9.]/g, '');
  if (val === '') return '';
  var value = parseInt(val);
  var num = '$' + value.toFixed(2).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");
  return num;
} 

链接器演示

于 2017-06-07T06:42:57.493 回答