全局更改Angular7十进制格式

时间:2019-04-12 10:53:48

标签: angular formatting angular7

如何更改angular7项目的十进制格式?我已经进行了研究,但是我只是在寻找适用于小范围的解决方案,并且可以确定有一种方法可以更改区域设置(我认为与之相关)以采用区域格式并将其设置为整个项目的默认设置。

为了更加简洁,我需要将逗号换成逗号,其中小数点在逗号后: 18,245.23€-> 18.245,23€

打印者:<span>{{totalPricing | number:'1.0-2'}}€<span>

有人知道吗?

2 个答案:

答案 0 :(得分:3)

我建议您不要使用自定义的DateCurrency类型的变量格式

您应该定义LOCALE_ID,这意味着您无需为DateCurrency(或货币,时间等)变量使用自定义格式。将此添加到您的顶级根模块。ts,

import { registerLocaleData } from '@angular/common';
import localeEs from '@angular/common/locales/es';
registerLocaleData(localeEs, 'es');
import { LOCALE_ID } from '@angular/core';

@NgModule({
  imports: [
  ...
  ],
  ...
  providers: [{ provide: LOCALE_ID, useValue: 'es' }]
})

来源:https://angular.io/api/core/LOCALE_ID#description

更新Here是有效的stackblitz示例。

答案 1 :(得分:0)

您可以创建pipe来格式化货币

@Pipe({
    name: 'currencyFormat'
})
export class CurrencyFormat {
    transform(value: number,
        currencySign: string = '€ ',
        decimalLength: number = 2, 
        chunkDelimiter: string = '.', 
        decimalDelimiter:string = ',',
        chunkLength: number = 3): string {

        value /= 100;

        let result = '\\d(?=(\\d{' + chunkLength + '})+' + (decimalLength > 0 ? '\\D' : '$') + ')';
        let num = value.toFixed(Math.max(0, ~~decimalLength));

        return (decimalDelimiter ? num.replace('.', decimalDelimiter) : num).replace(new RegExp(result, 'g'), '$&' + chunkDelimiter) + currencySign;
    }
}

演示:https://stackblitz.com/edit/angular-currency-pipe-format