Angular2货币符号

时间:2017-02-05 22:48:24

标签: angular pipe currency

我在澳大利亚试图展示一些货币价值,我正在做

function largerNum(num1,num2){
   if (isNaN(num1) || isNaN(num2)) {
      return NaN;
   }
   c = (num1>num2)?num1:num2;
   return c;
}

我得到的结果是 1,300,000澳元,我想显示 $ 1,300,000 (没有A),而不必更改为'USD'。

有没有办法自定义我的货币符号?

5 个答案:

答案 0 :(得分:4)

您可以将您的区域设置设置为澳大利亚,然后对于AUD货币,它只会显示$。

在您的应用提供商中添加以下内容:

import { LOCALE_ID } from '@angular/core';
...
{ provide: LOCALE_ID, useValue: 'en-AU' }

然后以下只会显示$:

{{ portfolio.currentValue | currency : 'AUD' : true : '4.0' }}

答案 1 :(得分:2)

这是你想要的,它不仅会处理澳元而且会处理所有货币:

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

@Pipe({
    name: "myCurrencyPipe"
})
export class MyCurrencyPipe implements PipeTransform {

    constructor(private currencyPipe: CurrencyPipe) {}

    transform(value: any, currencyCode?: string, symbolDisplay?: boolean, digits?: string): string {

        let transformed = this.currencyPipe.transform(value, currencyCode, symbolDisplay, digits);
        let myTransformed:string[] = [];

        for (var i = 0; i < transformed.length; i++) {
            if(!this.isLetter(transformed[i])){
                myTransformed.push(transformed[i])
            }
        }

        return myTransformed.join("");
    }

    isLetter(c) {
        return c.toLowerCase() != c.toUpperCase();
    }
}

这样称呼:{{ portfolio.currentValue | myCurrency : 'AUD' : true : '4.0' }}

首先,它会通过调用CurrencyPipe执行this.currencyPipe.transform(value, currencyCode, symbolDisplay, digits);正在执行的操作,然后通过删除输出中的所有字母来修改输出。

app.module.ts

@NgModule({
  declarations: [
    //..
    MyCurrencyPipe,
  ],
  providers: [
    //..
    CurrencyPipe
  ]
  //..
})

如果您想创建一个管道来处理CurrencyPipe输出:

 @Pipe({
    name: 'removeLettersFromStringPipe'
})
export class RemoveLettersFromStringPipe implements PipeTransform {
  transform(value: string){

    let myTransformed:string[] = [];

    for (var i = 0; i < value.length; i++) {
        if(!this.isLetter(value[i])){
            myTransformed.push(value[i])
        }
    }

    return myTransformed.join("");
  }

  isLetter(c) {
      return c.toLowerCase() != c.toUpperCase();
    }
}

将其用作{{ portfolio.currentValue | currency : 'AUD' : true : '4.0' | removeLettersFromStringPipe}}

答案 2 :(得分:0)

currencyPipe没有提供这种可能性。一个选项是编写自己的custom pipe来删除“A”并连接这些管道。

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

现在连接管道:

{{1}}

答案 3 :(得分:0)

正如其他答案中所建议的,我们已经使用了自定义管道,因为我也找不到自定义AUD符号的方法。

@Pipe({
   name: 'aud'
})
export class AudPipe implements PipeTransform {

transform(value: number): any {

    if (value === undefined || value === null) {
        return null;
    }

    let numberPipe = new DecimalPipe('en-AU');
    return '$' + numberPipe.transform(value, '1.2-2');
}

}

答案 4 :(得分:0)

现在支持

symbol-narrow,它将满足您的需求。

<!--output 'CA$0,001.35'-->
<p>B: {{b | currency:'CAD':'symbol':'4.2-2'}}</p>

<!--output '$0,001.35'-->
<p>B: {{b | currency:'CAD':'symbol-narrow':'4.2-2'}}</p>

https://angular.io/api/common/CurrencyPipe#usage-notes

同样适用于AUD。