Quais são os parâmetros para o número Pipe - Angular 2


123

Eu usei o tubo numérico abaixo para limitar os números a duas casas decimais.

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

Eu queria saber qual era a lógica por trás de '1.2-2'? Eu brinquei com eles tentando conseguir um tubo que filtre a zero casas decimais, mas sem sucesso.





2
Isso funciona apenas com Angular 2
Lord Darth Vader

Respostas:


251

O parâmetro possui esta sintaxe:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}

Então, seu exemplo de '1.2-2'meios:

  • Um mínimo de 1 dígito será mostrado antes do ponto decimal
  • Ele mostrará pelo menos 2 dígitos após o ponto decimal
  • Mas não mais que 2 dígitos

31
Isso também, infelizmente, arredonda o número e, pior ainda, não há nenhuma palavra sobre isso na documentação
phil294

1
@Blauhirn Eu tenho o mesmo problema, houve uma solução fácil ou devo criar meu próprio pipe?
S. Robijns

3
@ phil294 Sei que seu comentário é antigo, mas agora há uma descrição sobre números de arredondamento. angular.io/api/common/DecimalPipe
Cristiano Bombazar 22/02

7

De DOCS

Formata um número como texto. O dimensionamento e separador de grupo e outras configurações específicas do código do idioma são baseados no código do idioma ativo.

SINTAXE:

number_expression | number[:digitInfo[:locale]]

Onde expressionestá um número:

digitInfo é uma string que tem o seguinte formato:

{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}
  • minIntegerDigits é o número mínimo de dígitos inteiros a serem usados. O padrão é 1
  • minFractionDigits é o número mínimo de dígitos
  • após fração. O padrão é 0. maxFractionDigits é o número máximo de dígitos após a fração. O padrão é 3.
  • locale é uma sequência que define o local a ser usado (usa o LOCALE_ID atual por padrão)

DEMO


6
  1. Em relação à sua primeira pergunta. O pipe funciona da seguinte maneira:

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

    • minIntegerDigits: número mínimo de dígitos inteiros para mostrar antes do ponto decimal, definido como 1 por padrão
    • minFractionDigits: número mínimo de dígitos inteiros para mostrar após o ponto decimal

    • maxFractionDigits: número máximo de dígitos inteiros a serem mostrados após o ponto decimal

2.Em relação à sua segunda pergunta, filtre para zero casas decimais da seguinte maneira:

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

Para ler mais, confira o seguinte blog


2

'1.0-0' fornece zero casas decimais, ou seja, nenhuma casa decimal. por exemplo, US $ 500


Estou tentando formatar um número como 114.5 para exibir como 114, mas quando eu uso '1.0-0' ele exibe '115' alguém sabe por quê?
Karajá

1
É porque angular arredonda o valor e dá 115 para 114,5.
baucha alchi

2
Por que os votos negativos? isso funciona e responde à pergunta de como filtrar para zero casas decimais. Obrigado @alchibaucha resolveu meu problema com precisão.
S ..
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.