获取货币符号角度2

son*_*oni 8 javascript typescript angular2-pipe angular

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

正常情况$3.00 我只想要而$symbol不是数字

Var*_*eja 9

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

然后用作:

{{'USD'| currencySymbol}} ===> $
{{'INR'| currencySymbol}} ===> ?
Run Code Online (Sandbox Code Playgroud)

现场 Stackblitz 演示:

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

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


son*_*oni 8

因为我只想要货币的符号,所以我最终用一个常数来扩展货币管道,只返回符号.有一个恒定数字感觉有点"黑客",但由于我不想创建新的货币地图而且我无法提供数字,我认为这是最简单的方法.

这是我做的:

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, '');
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我可以用它作为:

{{'EUR' | CurrencySymbolPipe}} and get '€'
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和想法!


小智 5

我知道这个问题已经很老了,但是只要有人像我一样碰到这个问题,Angular就能做到这一点,而不必进行奇怪而美妙的Regex和字符串操作。

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

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);
  }
}
Run Code Online (Sandbox Code Playgroud)