He probado este en mi proyecto:
<div padding *ngIf="TotalAPagar"> $ {{TotalAPagar | number }} </div> mi variable se llama TotalAPagar , y estoy usando un canal numérico, pero muestra el valor como este 1,000,500 .
Necesito eso para cambiar la convención de numeración a dots . P.ej. 1.000.000
He estado leyendo en los documentos en angular pero no tengo ningún ejemplo.
Creo que hay dos formas de resolver este problema:
1. Puede intentar sobrescribir DecimalPipe desde la biblioteca @angular/common :
De este modo:
punto-replacer.pipe.ts
import { Pipe } from '@angular/core'; import {DecimalPipe} from "@angular/common"; @Pipe({ name: 'pointReplacer' }) export class PointReplacerPipe extends DecimalPipe { transform(value: any, digits?: string): string { return super.transform(value, digits).replace(',', '.'); } }y en tu código html :
<div padding *ngIf="TotalAPagar"> $ {{TotalAPagar | pointReplacer }} </div>2. Puede escribir su propia tubería, que reemplaza los caracteres y usar **doble tubería en su código html**
Prueba de esta manera:
punto-replacer.pipe.ts
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'pointReplacer' }) export class PointReplacerPipe implements PipeTransform { transform(value: string, args: any[]): string { if(value) { return value.replace(',', '.'); } return ''; } }y en tu código html :
<div padding *ngIf="TotalAPagar"> $ {{TotalAPagar | number | pointReplacer }} </div>Independientemente del método que elija, no olvide declarar su propia tubería en el módulo, donde la usa:
@NgModule({ declarations: [PointReplacerPipe], providers: [PointReplacerPipe] })Después de leer en foros y documentos sobre angular js y javascript encontré un método que pone los números en formato y moneda, ese método es toLocaleString(), es un método de javascript que ayuda a ponerlo en la moneda o idioma que necesitas .
Busco el nombre del país que necesito con el método y me muestro la información que necesito. ( http://www.localeplanet.com/icu/es-CO/ ), en mi caso fue colombia.
en mis funciones solo tengo que agregar .toLocaleString('es-CO') al resultado y poner el valor con la moneda especificada.
por ejemplo:
this.TotalAPagar = (this.calcularDescuentosLiquidacion(this.TotalDevengadoValor, this.sueldoPendientePorCancelarValor, this.item.libranza, this.item.prestamo_empleado)+ this.calcularIndemnizacion(this.item.promedio_salario, this.item.fecha_fin_contrato, this.item. fecha_inicio_contrato)).toLocaleString('es-CO');
Creo que esta es una solución más limpia:
Importar LOCALE_ID en app.modules.ts
import {ErrorHandler, NgModule, LOCALE_ID} from '@angular/core';y definir en proveedores como este:
providers: [ PouchServiceProvider, DbProvider, { provide: LOCALE_ID, useValue: "nl-NL" } ]esto elegirá automáticamente la identificación del separador, según local_id