angular 2と通貨パイプを使用してアプリケーションを構築していますが、番号のないISO値に従って通貨記号を取得する方法が見つかりません。つまり、私はフォーマットする数値を設定せずにシンボルが必要なだけです。
通常の状況$3.00
私は$symbol
、数ではありません
通貨の記号だけが欲しかったので、定数パイプで通貨パイプを拡張し、記号だけを返すことになりました。一定の数字を持っているのは一種の「ハック」のように感じますが、新しい通貨マップを作成したくなく、数字を提供できないので、最も簡単な方法だと思います。
これが私がしたことです:
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' | CurrencySymbolPipe}} and get '€'
あなたの助けとアイデアをありがとう!
私はこの質問がかなり古いことを知っていますが、誰かが私のようにそれに遭遇した場合、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);
}
}
テンプレートで次のコードを使用すると、新しいパイプを定義する必要がなくなります。
{{ ( 0 | currency : currencyCode : 'symbol-narrow' ) | slice:0:1 }}
どこ this.currencyCode
は、表示されると予想される3桁の通貨記号に設定されます。
例えば
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}}