货币管十进制数不工作

时间:2018-03-23 17:03:49

标签: angular

我正在使用管道如下

{{plansItem.price | currency:' ':symbol:digitInfo}}

如果我输入的值为3900,我只想输入39.00而且我想知道如何获得最后两位数字并输入小数

2 个答案:

答案 0 :(得分:1)

货币管道并不意味着在您的值中间放置一个小数点。它将根据指定的小数位数附加或舍入小数。

例如,

{{500.566 | currency}} => $500.57
{{3900 | currency}} => $3,900.00

如果您希望390039.00,则需要类似

的内容

{{3900 / 100 | currency}} => $39.00

或自定义管道。

答案 1 :(得分:0)

使用自定义管道

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

@Pipe({
  name: 'currencyCustom'
})
export class CurrencyCustomPipe implements PipeTransform {

  transform(value: number,
    currencySign: string = '€ ',
    decimalLength: number = 2,
    chunkDelimiter: string = '.',
    decimalDelimiter: string = ',',
    chunkLength: number = 3): string {

      value /= 100;

      const result = '\\d(?=(\\d{' + chunkLength + '})+' + (decimalLength > 0 ? '\\D' : '$') + ')';
      // tslint:disable-next-line:no-bitwise
      const num = value.toFixed(Math.max(0, ~~decimalLength));

      return currencySign + (
        decimalDelimiter ? num.replace('.', decimalDelimiter) : num
      )
      .replace(
        new RegExp(result, 'g'),
        '$&' + chunkDelimiter
      );
  }

}

在这样的HTML中

{{plansItem.price | currencyCustom:' ':2:'.':','}}