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

Xyr*_*oid 2 javascript currency angular

来自维基百科

印度编号系统使用与国际规范不同的分隔符。与国际系统中将数字按三位数分组不同,它将最右边的三位数字分组在一起(直到百位),然后按一组两位数字分组。因此,一万亿将被写为 10,00,00,00,00,000。

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

(123456789).toLocaleString('en-IN', {
    style: 'currency',
    currency: 'INR',
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
})  //  ? 12,34,56,789.00
Run Code Online (Sandbox Code Playgroud)

但是 Angular 的货币管道不会为en-IN语言环境返回相同的输出。我需要创建自定义管道吗?

{{ 123456789 | currency : 'INR' : 'symbol': '1.2-2' : 'en-IN' }}
<!-- ?123,456,789.00 -->
Run Code Online (Sandbox Code Playgroud)

Xyr*_*oid 5

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>
Run Code Online (Sandbox Code Playgroud)