Intl.NumberFormat:语言环境和符号

时间:2018-12-08 05:18:17

标签: javascript angular

我正在尝试使用Intl.NumberFormat更改我的货币在Angular6应用程序中的显示。它可以与USD正常工作,但是当我尝试将其用于南非兰特或阿拉伯联合酋长国迪拉姆时,我会不断得到:

RangeError:数值格式选项属性currencyDisplay的值R超出范围

我似乎找不到任何地方列出可以使用的所有有效语言环境和符号,因此想知道问题是否出在不支持这些货币的地方。

任何人都可以告知他们是否受支持,或者我可以在哪里找到要检查的有效列表。

示例代码,货币ZAR有效,但currencyDisplay失败,出现超出范围的错误:

const currencyFormat = new Intl.NumberFormat('af', {
            style: 'currency',
            currency: 'ZAR',
            currencyDisplay: 'R',
            minimumFractionDigits: 2
        });

2 个答案:

答案 0 :(得分:0)

currencyDisplay只接受namesymbol

new Intl.NumberFormat('af', {
            style: 'currency',
            currency: 'ZAR',
            currencyDisplay: 'name',
            minimumFractionDigits: 2
        }).format(1)
// "1.00 South African rand"

new Intl.NumberFormat('af',{             风格:“货币”,             货币:“ ZAR”,             currencyDisplay:“符号”,             minimumFractionDigits:2         })。format(1) \“ ZAR 1.00”


https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat

答案 1 :(得分:0)

很久以后,但可能会帮助其他人。这对我有用,因为它产生的值以南非使用的'R'开头。

let displayValue = new Intl.NumberFormat('en-ZA', {
  style: 'currency',
  currency: 'ZAR',
  minimumFractionDigits: 2
}).format(this.displaySubTotal)

有关正确的语言环境-请参阅:https://www.localeplanet.com/icu/en-ZA/index.html