You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的输入控件可能未自动适配布局方向,需手动设置:

    1. 直接在模板中为控件添加样式:
    <p-inputNumber
              id="retailValue"
              formControlName="retailValue"
              mode="currency"
              [currency]="currency"
              [locale]="locale"
              [style]="{ direction: 'rtl' }">
    </p-inputNumber>
    
    1. 或通过全局样式覆盖:
    .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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:04:59