在AngularJS中,如果金额为负数,则可以通过货币过滤器来更改默认格式

根据标题,将说明如何更改默认的货币筛选器格式。
虽然可以考虑制作自定义筛选器的方法,但介绍的方法是最简单的应对方式,
所以即使有想要单独格式化的地方,也建议与自定义筛选器一起使用。

這個問題已經描述了解決方法。由於已經驗證了操作,所以我將它總結在一起。
https://github.com/angular/angular.js/issues/12870#issuecomment-180785981

实现的方式

书式设定例:
-99,999

angular.module(
  
  )
  .run(["$locale", ($locale: ng.ILocaleService) => {
    let currencyPatterns = $locale.NUMBER_FORMATS.PATTERNS[1];
    currencyPatterns.negPre = "\u00a4-";
    currencyPatterns.negSuf = "";
  }])

书式设定示例:(\99,999)

angular.module(
  
  )
  .run(["$locale", ($locale: ng.ILocaleService) => {
    let currencyPatterns = $locale.NUMBER_FORMATS.PATTERNS[1];
    currencyPatterns.negPre = "(\u00a4";
    currencyPatterns.negSuf = ")";
  }])

说明

在中文中,为负数表示定义了前缀和后缀,并且过滤器只是用前缀和后缀括起来,因此能够轻松地进行覆盖。

负数前缀和后缀定义

    https://github.com/angular/angular.js/blob/b4f5377a2f7590cbda7b1bf7448ce8836565dee2/src/ngLocale/angular-locale_ja-jp.js#L114-L115
$provide.value("$locale", {
"NUMBER_FORMATS": {
    "PATTERNS": [
      {
        "negPre": "-",
        "negSuf": "",
      },
}

决定了负数表示的格式的部分。

if (number < 0 && !isZero) {
  return pattern.negPre + formattedText + pattern.negSuf;
}
广告
将在 10 秒后关闭
bannerAds