获取货币符号角度 2

Posted

技术标签:

【中文标题】获取货币符号角度 2【英文标题】:Get currency symbol angular 2 【发布时间】:2018-02-15 01:56:05 【问题描述】:

我正在使用 angular 2 和货币管道构建应用程序,但我找不到根据 ISO 值获取货币符号的方法,没有任何数字。我的意思是我只想要符号而不设置要格式化的数字。

正常情况$3.00 我只想要$symbol,而不想要号码

【问题讨论】:

您尝试过类似'' | currency:'USD':true 的方法吗? 你有一个数字,里面有货币符号,只得到什么符号? 在开发分支中有一个getLocaleCurrencySymbol '' | currency:'USD':true 将不起作用,因为 '' 是一个字符串。您可以尝试一个数字,它应该可以工作 90 |货币:'USD':true @trichetriche 不起作用,因为管道需要一个数字 【参考方案1】:

Angular 提供了一个内置方法getCurrencySymbol,它为您提供货币符号。您可以将管道作为该方法的包装器编写为

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

@Pipe(
  name: 'currencySymbol'
)
export class CurrencySymbolPipe implements PipeTransform 

  transform(
    code: string,
    format: 'wide' | 'narrow' = 'narrow',
    locale?: string
  ): any 
    return getCurrencySymbol(code, format, locale);
  

然后用作:

'USD'| currencySymbol ===> $
'INR'| currencySymbol ===> ₹

实时 Stackblitz 演示:

应用网址:https://angular-currency-symbol-pipe.stackblitz.io

编辑网址:https://stackblitz.com/edit/angular-currency-symbol-pipe

【讨论】:

我认为今天(2020 年),使用 getCurrencySymbol() 是我会做的,所以我将把你的答案改为接受。谢谢!【参考方案2】:

2017 年回答: 因为我只想要货币的符号,所以我最终用一个常数扩展了货币管道并只返回了符号。拥有一个常数感觉有点“黑客”,但由于我不想创建新的货币地图并且我无法提供数字,我认为这是最简单的方法。

这是我所做的:

import  Pipe, PipeTransform  from '@angular/core';
import CurrencyPipe from "@angular/common";

@Pipe(name: 'currencySymbol')
export class CurrencySymbolPipe extends CurrencyPipe implements 
PipeTransform 
    transform(value: string): any 
    let currencyValue = super.transform(0, value,true, "1.0-2");
    return currencyValue.replace(/[0-9]/g, '');
    

现在我可以将它用作:

 'EUR' | currencySymbol  and get '€'

感谢您的帮助和想法!

更新: 将接受的答案更改为 Varun 的答案,因为在 2020 年我将使用 getCurrencySymbol() 来完成该任务

【讨论】:

你的管道名称是'currencySymbol',所以你应该像'EUR' |货币符号 ?【参考方案3】:

我知道这个问题已经很老了,但是如果有人像我一样遇到它,Angular 有一种方法可以做到这一点,而无需进行奇怪而美妙的正则表达式和字符串操作。

我在@angular/common 中使用getCurrencySymbol 方法制作了以下管道

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

@Pipe(
  name: 'currencySymbol'
)
export class CurrencySymbolPipe implements PipeTransform 
  transform(currencyCode: string, format: 'wide' | 'narrow' = 'narrow', locale?: string): any 
    return getCurrencySymbol(currencyCode, format, locale);
  

【讨论】:

【参考方案4】:

您可以在模板中使用以下代码,避免定义新管道:

( 0 | currency : currencyCode : 'symbol-narrow' ) | slice:0:1

this.currencyCode 设置为预期显示的三位数货币符号。

【讨论】:

这正是我的想法,只是不知道如何正确写这个..这应该是最佳答案!【参考方案5】:

例如

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

@Pipe(name: 'removeAFromString')
export class RemoveAFromString implements PipeTransform 
  transform(value: number)
    return value.substring(1);

  

现在连接管道:

 portfolio.currentValue | currency : 'AUD' : true : '4.0' | removeAFromString

【讨论】:

问题是我没有一个号码来使用这个管道和正常的实现。我想要类似 currency.getCurrencySymbol('EUR') 这是一个非常糟糕的主意:不是所有的货币符号都显示在数字的左边,也不是所有的货币符号都是一个符号。试试 marcoscaceres.github.io/jsi18n/#localize_currency 的货币格式化程序,看看我的意思。

以上是关于获取货币符号角度 2的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iPhone 中的货币代码中获取货币符号?

使用swift从货币代码中获取货币符号

如何从iphone中的货币代码中获取货币符号?

根据国家/地区获取货币符号

在php中从mysql数据库中获取货币符号[重复]

无法解析逗号分隔的字符串数量。最初带有货币符号