angular - valuta nummerformat


Jag försöker formatera beloppet jag får från min API till det lokalspecifika formatet.

I konsolen:

Intl.NumberFormat('en-IN').format(450000) // "4,50,000"

I en Angular 2-komponentmall:

{{ Intl.NumberFormat('en-IN').format(450000) }} // Cannot read property 'NumberFormat' of undefined

{{ 450000 | currency:'INR':true }} // ₹450,000.00

Finns det ett sätt för mig att få ₹4,50,000.00 utan att ange avgränsarna uttryckligen (och kunna ändra lokaliseringsträngen 'en-IN' till 'en-US' för att uppdatera).

Svar #1

Använd bara valutapipen för att hålla det enkelt. Antag att din variabel i din mall kallas myamount. Sedan får du bara åtkomst till den med

@Component({
  selector: 'currency-pipe',
  template: `<div>
    <p>Amount: {{myamount | currency:'USD':true}}</p>
  </div>`
})
export class CurrencyPipeComponent {
  myamount: number = 0.259;
}

Källa och mer information om valutapipen: https://angular.io/docs/ts/latest/api/common/index/CurrencyPipe-pipe.html

Du kanske också vill ställa in standardkulturen: Hur man ställer in lokala inställningar i DatePipe i Angular2?

I kokboken kan du hitta mer information om i18n och hur du ändrar det vid körning:

<script>
  // Get the locale id somehow
  document.locale = 'fr';

  // Map to the text plugin
  System.config({
    map: {
      text: 'systemjs-text-plugin.js'
    }
  });

  // Launch the app
  System.import('app').catch(function(err){ console.error(err); });
</script>

Källa: https://angular.io/docs/ts/latest/cookbook/i18n.html#!#merge-with-the-jit-compiler

Svar #2

Belopp separerat med komma:

Använd den här koden i din HTML-mall

{{ separteAmount(450000)}}

och

Skapa en funktion i din .ts-fil

separteAmount(Number){
   return Intl.NumberFormat('en-IN').format(Number)
}