en-IN语言环境不适用于有角货币管道

时间:2018-08-15 11:20:34

标签: javascript angular currency

来自Wikipedia

  

印度编号系统使用的分隔符与国际标准不同。它没有像国际体系中那样将数字进行三位分组,而是将最右边的三位数字组合在一起(直到数百位),然后再按两位数字进行分组。因此,一万亿将写成10,00,00,00,00,000。

toLocaleString的JavaScript函数以正确的格式返回en-IN语言环境。

(123456789).toLocaleString('en-IN', {
    style: 'currency',
    currency: 'INR',
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
})  //  ₹ 12,34,56,789.00

但是Angular的币种管道对于en-IN语言环境没有返回相同的输出。我需要创建自定义管道吗?

{{ 123456789 | currency : 'INR' : 'symbol': '1.2-2' : 'en-IN' }}
<!-- ₹123,456,789.00 -->

1 个答案:

答案 0 :(得分:0)

app.module.ts中添加以下行以启用印度数字格式。如果您要使用多个语言环境,还给出了示例。

import { registerLocaleData } from '@angular/common';

import localeIn from '@angular/common/locales/en-IN';
registerLocaleData(localeIn);

import localeAr from '@angular/common/locales/ar-EG';
registerLocaleData(localeAr);


<p>
  <!-- ₹ 12,34,56,789.00 -->
  {{ 123456789 | currency : 'INR' : 'symbol': '1.2-2' : 'en-IN' }}
  <br/>
  <!-- ‏د.إ.‏ 123,456,789.00 -->
  {{ 123456789 | currency : 'AED' : 'symbol': '1.2-2' : 'ar-EG' }}
</p>