web-dev-qa-db-ja.com

Angular2通貨パイプ変更小数点区切り文字

こんにちはangular友達、

私はangular2アプリ(実際には複数)に取り組んでいます。そして私はオランダに住んでいます。

現在、私は次のように私の通貨をフォーマットしています:

{{someIntegerWithCentsToBeDivided/100 |通貨: 'EUR':true: '1.0-2'}}

これにより、500がEurosign 5、501がEurosign 5.01と表示されます。

今私たちはオランダ人が本当にカンマが好きなので、誰もがを変更する方法を知っていますか?に、?

誰かが5を表示する方法を知っている場合、ボーナスポイント。私の考えは今、CurrencyPipeを拡張することです

10
Mathijs Segers

あなたの問題はおそらく少し前に解決されたかもしれませんが、他のオランダの開発者(私のような)のための参照用です:

カスタムパイプを作成します。

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

今あなたは使うことができます:

{{someIntegerWithCentsToBeDivided | currencyFormat}}

パイプにはすでにすべてのオランダのデフォルトが含まれていますが、それらを簡単に変更したり、テンプレートの引数として使用したりできます。例えば:

{{1234567 | currencyFormat:'$',2,' ','.',3}}

あげる $12 345.67出力として。

20
JanP

手遅れですが、解決策を見つけました。

私は何かを置き換えるためのパイプを作成しています:

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

私はそれを2回使ってあなたの事件を解決しました。

{{ 5.01999 | currency:'BRL':true | replace:'.':',' | replace:',00':',-' }}}
2
Mateus Ferreira