如果输入是 €,如何在右侧添加货币符号,或者如果输入是 $,如何在左侧添加货币符号?有管道或其他东西吗?
这是我写的管道,但用户可以输入我想避免的字母,或 000。
transform(value: unknown, currencySymbol: string):unknown {
let stringValue = <string>value;
if (!stringValue) {
stringValue = currencySymbol + ' 0';
}
if (stringValue.charAt(0) === currencySymbol) {
return currencySymbol + ' ' + stringValue.replace(currencySymbol, '').trim();
} else
{
return currencySymbol + ' ' + value;
}
}
Angular 货币管道已经根据区域设置数据做到了这一点。为了使用它,您需要先添加本地化功能:
ng add @angular/localize
然后,您必须在 app.module.ts 中注册您需要的所有语言环境。请注意,必须直接调用寄存器函数(而不是在模块构造函数内):
import { registerLocaleData } from '@angular/common';
import de from '@angular/common/locales/de';
registerLocaleData(de, 'de');
您可以像这样使用货币管道:
{{ 9999.99 | currency }} <br/>
{{ 9999.99 | currency: "EUR" : "symbol" : undefined : "de" }}
输出:
$9,999.99
9.999,99 €
备注: 请注意,不仅货币符号的位置会自动更改,而且其他内容也会自动更改,例如小数点分隔符(. 或 ,)。因此,在这里使用 Angular 的本地化功能而不是重新发明轮子是绝对有意义的。