Atualizado: 03/01/2025

Trabalhando com Pipes - Angular

Pipes são ferramentas especiais que permitem formatar os valores exibidos. Por exemplo, podemos querer exibir uma data específica:

import { Component } from "@angular/core";
import { DatePipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [DatePipe], // importando o DatePipe
  template: `<div>Sem formatação: {{myDate}}</div>
              <div>Com formatação: {{myDate | date}}</div>`
})
export class AppComponent {
  myDate = new Date(1961, 3, 12);
}

Aqui, criamos uma data que é exibida duas vezes no template. No segundo caso, a data é formatada com a ajuda da classe DatePipe. No entanto, para usar o DatePipe, é necessário importá-lo do pacote "angular/common".

Usando pipes em Angular

Pipes Integrados

O Angular oferece uma variedade de pipes integrados. Alguns dos principais são:

  • CurrencyPipe: formata valores monetários.

  • PercentPipe: formata percentuais.

  • UpperCasePipe: converte uma string para letras maiúsculas.

  • LowerCasePipe: converte uma string para letras minúsculas.

  • DatePipe: formata datas.

  • DecimalPipe: define o formato de números.

  • SlicePipe: corta partes de uma string.

Ao utilizar esses pipes, o sufixo "Pipe" é omitido (com exceção do DecimalPipe, que usa o nome "number" para aplicação):

import { Component } from "@angular/core";
import { UpperCasePipe, LowerCasePipe, PercentPipe, CurrencyPipe } from "@angular/common";

@Component({
    selector: "my-app",
    standalone: true,
    imports: [UpperCasePipe, LowerCasePipe, PercentPipe, CurrencyPipe],
    template: `<div> UpperCasePipe: {{welcome | uppercase}}</div>
                <div>LowerCasePipe: {{welcome | lowercase}}</div>
                <div>PercentPipe: {{percentage | percent}}</div>
                <div>CurrencyPipe: {{percentage | currency}}</div>`
})
export class AppComponent {
    welcome: string = "Hello World!";
    percentage: number = 0.14;
}
Convertendo dados usando pipes em Angular

Parâmetros em Pipes

Pipes podem receber parâmetros. Por exemplo, o SlicePipe, que corta uma string, pode receber índices de início e fim da substring que será extraída:

import { Component } from "@angular/core";
import { SlicePipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [SlicePipe],
  template: `<div>{{welcome | slice:3}}</div>
              <div>{{welcome | slice:6:11}}</div>`
})
export class AppComponent {
  welcome: string = "Hello World!";
}

Todos os parâmetros são passados para o pipe por meio de dois-pontos. No exemplo slice:6:11, uma substring é extraída do índice 6 ao 11. O índice inicial é obrigatório, mas o índice final é opcional. Se não for especificado, a substring vai até o fim da string.

Parâmetros em pipes em Angular

Formatando Datas

O DatePipes pode receber um modelo de data como parâmetro:

import { Component } from "@angular/core";
import { DatePipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [DatePipe],
  template: `<div>{{myDate | date:"dd/MM/yyyy"}}</div>`
})
export class AppComponent {
  myDate = Date.now();
}

Formatando Números

O DecimalPipe aceita um modelo de formato numérico como parâmetro:

import { Component } from "@angular/core";
import { DecimalPipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [DecimalPipe],
  template: `<div>{{pi | number:"2.1-2"}}</div>
              <div>{{pi | number:"3.5-5"}}</div>`
})
export class AppComponent {
  pi: number = 3.1415;
}

O modelo segue o formato "minIntegerDigits.minFractionDigits-maxFractionDigits", onde:

  • minIntegerDigits: número mínimo de dígitos na parte inteira.

  • minFractionDigits: número mínimo de dígitos na parte decimal.

  • maxFractionDigits: número máximo de dígitos na parte decimal.

  • locale: código da localidade a ser aplicada.

Formatando números com DecimalPipe em Angular

Formatando Valores Monetários

O CurrencyPipe pode receber uma série de parâmetros:

import { Component } from "@angular/core";
import { CurrencyPipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [CurrencyPipe],
  template: `<div>{{ money | currency : 'BRL' }}</div>
    <div>{{ money | currency : 'BRL' : 'code' : '1.1-1' }}</div>`,
})
export class AppComponent {
  money: number = 23.45;
}
Formatando valores monetários com CurrencyPipe em Angular

Aqui estão alguns dos parâmetros que podem ser utilizados:

  • currencyCode: o código da moeda, conforme a especificação ISO 4217 (padrão é USD).

  • display: como o símbolo da moeda será exibido. Pode ser "code" (código da moeda), "symbol" (símbolo da moeda, padrão), "symbol-narrow" (símbolo estreito), ou uma string personalizada.

  • digitsInfo: o formato do número, similar ao DecimalPipe.

  • locale: código de localidade a ser aplicado.

Combinando Pipes

É possível aplicar vários pipes a um único valor, criando uma cadeia de transformações separadas por uma barra vertical:

import { Component } from "@angular/core";
import { SlicePipe, UpperCasePipe } from "@angular/common";

@Component({
  selector: "my-app",
  standalone: true,
  imports: [SlicePipe, UpperCasePipe],
  template: `<div>{{message | slice:6:11 | uppercase}}</div>`
})
export class AppComponent {
  message = "Hello World!";
}
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com