How to display the currency symbol to the right in Angular
This is working (angular 6) on html side:
{{ amount | currency: 'EUR':'symbol':undefined:'fr-FR' }}
and on typescript side:
const number = 123456.789;
console.log(new Intl.NumberFormat('fr-FR', { style: 'currency', currency: 'EUR' }).format(number));
123.456,79 €
I was looking to this answer, and the current version of angular it is possible to define providers for localization and Default currency code.
Like this.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule, LOCALE_ID, DEFAULT_CURRENCY_CODE } from '@angular/core';
import localePt from '@angular/common/locales/pt';
import { registerLocaleData } from '@angular/common';
// Register the localization
registerLocaleData(localePt, 'pt-BR');
@NgModule({
declarations: [
AppComponent,
NotificationListComponent
],
imports: [
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpClientModule,
],
providers: [
{
provide: LOCALE_ID,
useValue: 'pt-BR'
},
{
provide: DEFAULT_CURRENCY_CODE,
useValue: 'BRL'
},
DataService,
NotificationsService,
GeoLocationService,
],
entryComponents: components,
})
Once done, the utilization is very simple:
<div class="col-12" *ngIf="isContentInsurance.value">
<h5 class="pull-left">Gst</h5>
<span class="pull-right">-{{offers.contentInsurance | currency}}</span>
</div>
It is not necessary to create any custom pipeline or different custom action.
Since Angular2 RC6 version you can set default locale directly in your app module (providers):
import {NgModule, LOCALE_ID} from '@angular/core';
@NgModule({
providers: [{
provide: LOCALE_ID,
useValue: 'de-DE' // 'de-DE' for Germany, 'fr-FR' for France ...
},
]
})
Afterwards the currency pipe should pick up the locale settings and move the symbol to right:
@Component({
selector:"my-app",
template:`
<h2>Price:<h2>
{{price|currency:'EUR':true}}
`
})