¿Cuáles son los parámetros para el número Pipe - Angular 2?


123

He usado la tubería de números a continuación para limitar los números a dos decimales.

{{ exampleNumber | number : '1.2-2' }}

Me preguntaba cuál era la lógica detrás de '1.2-2'. He jugado con estos tratando de lograr una tubería que filtre a cero decimales pero fue en vano.





2
Esto solo funciona con Angular 2
Lord Darth Vader

Respuestas:


251

El parámetro tiene esta sintaxis:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

Entonces su ejemplo de '1.2-2'medios:

  • Se mostrará un mínimo de 1 dígito antes del punto decimal
  • Mostrará al menos 2 dígitos después del punto decimal
  • Pero no más de 2 dígitos

31
Esto también se redondea por desgracia el número, y lo que es peor, no hay una palabra sobre ello en la documentación
phil294

1
@Blauhirn Tengo el mismo problema, ¿hubo una solución fácil o debería crear mi propia tubería?
S. Robijns

3
@ phil294 Sé que tu comentario es antiguo, pero ahora hay una descripción sobre el redondeo de números. angular.io/api/common/DecimalPipe
Cristiano Bombazar

7

Desde el DOCS

Formatea un número como texto. El tamaño y el separador de grupo y otras configuraciones específicas de la localidad se basan en la localidad activa.

SINTAXIS:

number_expression | number[:digitInfo[:locale]]

donde expressionhay un número:

digitInfo es una cadena que tiene el siguiente formato:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}
  • minIntegerDigits es el número mínimo de dígitos enteros a usar. El valor predeterminado es 1
  • minFractionDigits es el número mínimo de dígitos
  • después de la fracción El valor predeterminado es 0. maxFractionDigits es el número máximo de dígitos después de la fracción. El valor predeterminado es 3.
  • locale es una cadena que define el locale a usar (usa el LOCALE_ID actual por defecto)

DEMO


6
  1. Con respecto a su primera pregunta, la tubería funciona de la siguiente manera:

    numberValue | number: {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

    • minIntegerDigits: número mínimo de dígitos enteros para mostrar antes del punto decimal, establecido en 1 por defecto
    • minFractionDigits: número mínimo de dígitos enteros para mostrar después del punto decimal

    • maxFractionDigits: número máximo de dígitos enteros para mostrar después del punto decimal

2. En cuanto a su segunda pregunta, filtre a cero decimales de la siguiente manera:

{{ numberValue | number: '1.0-0' }}

Para más información, consulte el siguiente blog.


2

'1.0-0' le dará cero decimales, es decir, sin decimales. por ejemplo, $ 500


Estoy tratando de formatear un número como 114.5 para mostrar como 114 pero cuando uso '1.0-0' muestra '115' ¿Alguien sabe por qué?
Karaja

1
Es porque angular redondea el valor y da 115 para 114.5.
alchi baucha

2
¿Por qué los votos negativos? esto funciona y responde a la pregunta de cómo filtrar a cero decimales. Gracias @alchibaucha resolvió mi problema con precisión.
S ..
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.