Угловой

Форматировать валюту в Angular

Руководство по преобразованию чисел в форматированную валюту в Angular

В этой статье я покажу вам, как работать с валютой в Angular.

  1. ВалютаТрубка
  2. Использование CurrencyPipe в HTML
  3. Использование CurrencyPipe в TypeScript

Чтобы получить больше подобного контента, посетите https://betterfullstack.com

ВалютаТрубка

CurrencyPipe преобразует число в строку валюты, отформатированную в соответствии с правилами локали. Это определяет размер группы и разделитель, десятичный знак и другие конфигурации, зависящие от локали.

Вот реализация от @angular/common:

Вы можете прочитать описание выше, чтобы узнать больше о каждом параметре.

Использование CurrencyPipe в HTML

В этом разделе я приведу примеры того, как работает валюта в шаблонах Angular HTML.

В каждом примере будет использоваться одна и та же настройка шаблона:

Сначала установим claimMoney на 1. Это даст следующие результаты:

1
$1.00
₫1
VND0,001.00 // this because I set min integer to 4
₫0,001.00 // this because I set min integer to 4
₫0,001.00 // this because I set min integer to 4

Теперь установите claimMoney на 1000.

1000
$1,000.00
₫1,000
VND1,000.00
₫1,000.00
₫1,000.00

Наконец, установите claimMoney на '1,000'. CurrencyPipe ожидает, что значение будет числом или преобразовано в число с помощью JavaScript. Поскольку в нашей строке есть запятая ,, она не распознается как число и при анализе станет NaN.

Я получаю сообщение об ошибке. Это означает, что CurrencyPipe НЕ принимает запятую в value:any выше.

Использование CurrencyPipe в TypeScript

Много раз мне приходилось обрабатывать валюту внутри компонента Angular, который представляет собой .ts файл.

Вот пример проблемы. Я вызываю один API, и он возвращает число и формат 1110.5. Затем мне нужно вставить его в форму. Затем я разрешаю пользователю редактировать это число и отправлять результат на сервер.

Сначала введите CurrencyPipe в constructor:

constructor(private currencyPipe : CurrencyPipe, private fb: FormBuilder){}

Затем я форматирую число и вставляю это значение в форму ngOnInit() жизненного цикла:

ngOnInit() {
    this.claimMoney = 1000.12; // this value get from API
    this.claimForm = this.fb.group({
      total: [ this.formatMoney(this.claimMoney), Validators.required]
    });
}

formatMoney(value) {
    const temp = `${value}`.replace(/\,/g, "");
    return this.currencyPipe.transform(temp).replace("$", "");
}

Чтобы получить преобразованный результат, я добавил один метод под названием transformTotal():

transformTotal() {
    const value = this.claimForm.controls.total.value;
    this.claimForm.controls.total.setValue(
      this.formatMoney(value.replace(/\,/g, "")), 
      {emitEvent: false}
    );
}

Он будет вызываться из ввода в шаблоне компонента.

Резюме

В этой статье был представлен простой способ работы с валютой в Angular. Это помогает сократить время и количество ошибок разработчика при внедрении форматирования валюты в ваше приложение.

Надеюсь, эта статья оказалась для вас полезной! Вы можете связаться со мной на моем сайте. Не стесняйтесь оставлять любые вопросы в комментариях ниже. Буду рад помочь!

Проверьте исходный код здесь.



Ресурсы / Ссылки

[1]: Angular CurrencyPipe https://angular.io/api/common/CurrencyPipe#ngmodule