Лучшим вариантом для меня был знаменитый https://www.npmjs.com/package/numeral пакет. (он работает с той же логикой moment.js
)
Чтобы установить его: npm i [email protected]
и с типами npm i --save-dev @types/[email protected]
В вашем файле ts
вы можете использовать следующее:
`R$ ${numeral(<your-model-value>).value().toLocaleString()}`
Для шаблона HTML вы можете создать Pipe
следующим образом:
import {Pipe, PipeTransform} from '@angular/core';
import * as numeral from 'numeral';
@Pipe({
name: 'numberLocale'
})
export class NumberLocalePipe implements PipeTransform {
transform(value: any, args?: any): any {
const numeralNumber = numeral(value);
return numeralNumber.value().toLocaleString();
}
}
Кроме того, для валюты (и локалей) хорошей стратегией является использование пакета ng2-currency-mask
для валютных масок в HTML (но в файлах ts
вам может потребоваться "перевести" связанное значение в модель с numeral
перед сохранением объекта модели.
Использование ng2-currency-mask
в шаблоне HTML:
<input [(ngModel)]="model.value"
[options]="{ prefix: 'R$ ', thousands: '.', decimal: ',' }"
allowNegative="false" currencyMask>
И на ts
перед сохранением модели:
if(this.model.value)
this.model.value = numeral(this.model.value).value();
https://github.com/cesarrew/ng2-currency-mask
person
Richard Lee
schedule
24.09.2017