如何使用 Angular 货币过滤器为货币指定不同于默认的语言环境?

How to specify locale different from default for currency with Angular currency filter?

在我们的应用程序中,我们将 angular 用于 i18n/l10n。它工作正常。

但有一个问题 - 有时用户需要查看与区域设置一致的信息,而不是当前的信息。更具体 - 货币。例如。 - 用户的区域设置为 de-de,他们打开了一个商品价格以美元为单位的目录。当然,我可以明确指定货币符号:

{{item.Price.Value | currency : "$" : 2 }}

但这不是一个非常优雅的解决方案,因为用户会看到:

349,99 $

格式不正确。正确的是:

9.99

所以,我不想只更改货币符号,而是要更改特定字段的整个货币格式,并根据当前区域设置将页面上的其余部分本地化。

是否可以使用 Angular 货币过滤器,还是我应该使用自己的自定义过滤器?

查看源代码后,我确定 Angular 使用 'undefined' 作为使用默认本地货币的过滤器的参数触发器。 (参见 Angular 1.2.15 中的第 14370 行)

因此,当链接过滤器时,您可以通过提供 undefined 作为参数来获取默认值。

对于您来说,以下内容应该可以满足您的需求:

{{item.Price.Value | currency : undefined : 2 }}

也就是说,您在此处指定的 2 位小数是 Angular 默认值。 您还可以使用以下过滤器获得 2 位小数:

{{item.Price.Value | currency}}