PrimeNG 14.0.0中ar-AE locale下p-inputNumber控件异常求助
解决PrimeNG 14.0.0中ar-AE区域+AED货币的输入控件异常问题
针对你遇到的PrimeNG 14.0.0版本中,p-inputNumber在locale="ar-AE"且currency="AED"时的异常问题,可尝试以下解决方案:
注册ar-AE区域数据
Angular的国际化依赖区域数据支持,若未注册ar-AE,会导致Intl格式化逻辑异常。在应用根模块(如app.module.ts)中添加以下代码:import { registerLocaleData } from '@angular/common'; import arAE from '@angular/common/locales/ar-AE'; registerLocaleData(arAE);适配RTL布局
ar-AE属于从右到左(RTL)的语言区域,PrimeNG的输入控件可能未自动适配布局方向,需手动设置:- 直接在模板中为控件添加样式:
<p-inputNumber id="retailValue" formControlName="retailValue" mode="currency" [currency]="currency" [locale]="locale" [style]="{ direction: 'rtl' }"> </p-inputNumber>- 或通过全局样式覆盖:
.p-inputnumber { direction: rtl; }指定货币显示格式
显式设置currencyDisplay属性,强制使用符号或代码格式,避免PrimeNG的自动格式化冲突:<p-inputNumber id="retailValue" formControlName="retailValue" mode="currency" [currency]="currency" [locale]="locale" currencyDisplay="symbol"> </p-inputNumber>临时手动格式化方案
若以上方法无效,可借助Angular的CurrencyPipe手动处理数值格式化,示例如下:// 组件.ts文件 import { CurrencyPipe } from '@angular/common'; constructor(private currencyPipe: CurrencyPipe) {} formatRetailValue(value: number): string { return this.currencyPipe.transform(value, this.currency, 'symbol', '1.2-2', this.locale) || ''; }模板中可绑定格式化后的值,或结合普通输入框实现自定义控件。
内容的提问来源于stack exchange,提问作者Kalanka
相关产品推荐
相关产品推荐

