货币管道格式错误

Posted

技术标签:

【中文标题】货币管道格式错误【英文标题】:Currency pipe wrong format 【发布时间】:2017-10-07 10:26:09 【问题描述】:

在我的 angular 4 项目中,我想显示一些意大利金额,所以我使用默认的标准货币管道,例如: amount | currency:'EUR':true

但它显示的数字格式如下:€12.00 这不是意大利标准,我希望是这样的:€12,00

正如我在 documentation 中看到的,管道依赖于 i18n API,并且在我的浏览器中支持 browser-support(我使用的是最新的 chrome)

使用这个:providers: [provide: LOCALE_ID, useValue: 'it-IT'] 正确格式化货币,但我不想要默认的 LOCALE。

那么为什么这个管道不能自动理解 LOCALE?

【问题讨论】:

【参考方案1】:

像这样创建一个新管道

import  Pipe, PipeTransform  from '@angular/core';

@Pipe(
    name: 'CurrencyFilter',
    pure: false
)
export class CurrencyFilterPipe implements PipeTransform 
    transform(items: number): any 
        var OrigionalValue = items;
        var stringValue = OrigionalValue.toString(); // to get comma we must convert it to string 
        var CommaValue = stringValue.replace('.', ',');
        var finalValue = "€" + CommaValue;
        return finalValue;
    

金额 |货币过滤器

【讨论】:

这只解决了这种情况的问题...它不能解决任何语言的问题,我需要一个基于 Locale_Id 有效的解决方案 @Alessandro 你能看看github.com/angular/angular/issues/11820

以上是关于货币管道格式错误的主要内容,如果未能解决你的问题,请参考以下文章

使用不带符号的货币管道

APIM:从 Azure DevOps CD 管道中的 Azure Blob 存储中检索策略 XML 失败,如收到错误,如提供的链接格式错误

Angular 4 - 如何在输入类型中使用货币管道

NumberFormatter 在货币模式下对小负数的错误行为

Angular CurrencyPipe货币管道关于人民币符号¥的问题

格式化 货币 时间