Angular2货币管道更改小数分隔符

Mat*_*ers 10 format currency angular

你好角的朋友,

我正在开发一个angular2应用程序(实际上是多个).我住在荷兰.

目前我正在使用以下内容格式化我的货币:

{{someIntegerWithCentsToBeDivided/100 | 货币: '欧元':真: '1.0-2'}}

这显示500欧元5和501的标志为欧洲标志5.01.

现在我们的dutchies真的像逗号一样,所以有人知道如何改变.到了,?

如果有人知道如何显示5,奖励积分, - 可选地,当没有美分时.我现在的想法是扩展CurrencyPipe

Jan*_*anP 20

您的问题可能已经解决了一段时间,但仅供其他荷兰开发人员(如我自己)参考:

创建自定义管道:

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

@Pipe({
    name: 'currencyFormat'
})
export class CurrencyFormat {
    transform(value: number,
        currencySign: string = '€ ',
        decimalLength: number = 2, 
        chunkDelimiter: string = '.', 
        decimalDelimiter:string = ',',
        chunkLength: number = 3): string {

        value /= 100;

        let result = '\\d(?=(\\d{' + chunkLength + '})+' + (decimalLength > 0 ? '\\D' : '$') + ')';
        let num = value.toFixed(Math.max(0, ~~decimalLength));

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

现在你可以使用:

{{someIntegerWithCentsToBeDivided | currencyFormat}}
Run Code Online (Sandbox Code Playgroud)

Pipe已包含所有荷兰语默认值,但您可以轻松更改它们或将它们用作模板中的参数.例如:

{{1234567 | currencyFormat:'$',2,' ','.',3}}
Run Code Online (Sandbox Code Playgroud)

$12 345.67作为输出.


Sil*_*oia 6

你需要导入那个

import { registerLocaleData } from '@angular/common';
import localeIt from '@angular/common/locales/it'
registerLocaleData(localeIt, 'it');
Run Code Online (Sandbox Code Playgroud)

并将该管道添加到视图中

{{ 1000 | currency: 'EUR':'symbol':'.2-2':'it' }}
Run Code Online (Sandbox Code Playgroud)


小智 5

我来晚了,但我找到了解决方案。

我只是创建一个管道来替换任何东西:

import { PipeTransform, Injectable, Pipe }     from '@angular/core';
@Pipe({
  name: 'replace'
})
@Injectable()
export class ReplacePipe implements PipeTransform {
  constructor(){}
  transform(item: any, replace, replacement): any {
    if(item == null) return "";
    item = item.replace(replace, replacement);
    return item;
  }
}
Run Code Online (Sandbox Code Playgroud)

我用过两次来解决你的案子。

{{ 5.01999 | currency:'BRL':true | replace:'.':',' | replace:',00':',-' }}}
Run Code Online (Sandbox Code Playgroud)