タイトル通り、currency filter
の既定の書式を変更する方法について記載します。
フィルターを自作する方法も考えられますが、紹介する方法が一番手間が少ない対応方法になるため、
個別にフォーマットしたい箇所がある場合でも、自作フィルターと併用するとよいと思います。
以下の issue にやり方が記載してあります。動作が確認できたため、まとめておきます。
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 = ")";
}])
解説
マイナス表記用のプレフィックスとサフィックスが定義されていて、
フィルターではプレフィックスとサフィックスで囲んでいるだけなので、
簡単に上書きできるようになっている。
マイナス表記用のプレフィックスとサフィックスの定義
$provide.value("$locale", {
"NUMBER_FORMATS": {
"PATTERNS": [
{
"negPre": "-",
"negSuf": "",
},
}
マイナス表記の書式を決定している箇所
if (number < 0 && !isZero) {
return pattern.negPre + formattedText + pattern.negSuf;
}