Привет друзья angular,

Я работаю над приложением angular2 (на самом деле несколько). И я живу в Нидерландах.

В настоящее время я форматирую свою валюту следующим образом:

{{someIntegerWithCentsToBeDivided / 100 | валюта: 'EUR': true: '1.0-2'}}

Это отображает что-то вроде 500, чтобы быть Eurosign 5 и 501, чтобы быть Eurosign 5.01.

Теперь мы, голландцы, действительно любим запятую наоборот, так что кто-нибудь знает, как изменить. к,?

Бонусные баллы, если кто-то умеет показывать 5, - по желанию, когда нет центов. Сейчас я думаю о расширении CurrencyPipe

13
Mathijs Segers 26 Апр 2016 в 10:52

3 ответа

Лучший ответ

Ваша проблема, вероятно, была решена некоторое время назад, но просто для справки для других голландских разработчиков (например, меня):

Создайте собственную трубу:

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

В Pipe уже включены все голландские значения по умолчанию, но вы можете легко изменить их или использовать в качестве аргументов в шаблоне. Например:

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

Даст $12 345.67 в качестве вывода.

23
JanP 14 Окт 2020 в 13:22

Вам нужно импортировать это

import { registerLocaleData } from '@angular/common';
import localeIt from '@angular/common/locales/it'
registerLocaleData(localeIt, 'it');

И добавьте эту трубу в поле зрения

{{ 1000 | currency: 'EUR':'symbol':'.2-2':'it' }}
0
Silvio Troia 18 Сен 2020 в 14:06

Я опоздал, но нашел решение.

Я просто создаю канал, чтобы что-нибудь заменить:

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

Я использовал это дважды, чтобы раскрыть ваше дело.

{{ 5.01999 | currency:'BRL':true | replace:'.':',' | replace:',00':',-' }}}
4
Mateus Ferreira 7 Янв 2017 в 23:33