Els tubs (pipes) a Angular són una manera senzilla de transformar dades en les plantilles. Angular proporciona diversos tubs integrats, com ara DatePipe
, UpperCasePipe
, LowerCasePipe
, CurrencyPipe
, entre d'altres. No obstant això, en moltes situacions, és possible que necessitis crear tubs personalitzats per satisfer necessitats específiques de la teva aplicació.
Què és un tub personalitzat?
Un tub personalitzat és una classe que implementa la interfície PipeTransform
i defineix un mètode transform
que conté la lògica de transformació de dades. Els tubs personalitzats es poden utilitzar en plantilles Angular de la mateixa manera que els tubs integrats.
Crear un tub personalitzat
Pas 1: Crear la classe del tub
Primer, crea un fitxer nou per al teu tub. Per exemple, custom.pipe.ts
.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'custom' }) export class CustomPipe implements PipeTransform { transform(value: any, ...args: any[]): any { // Lògica de transformació return value; } }
Pas 2: Implementar la lògica de transformació
Suposem que volem crear un tub que inverteixi una cadena de text. Implementem la lògica dins del mètode transform
.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'reverse' }) export class ReversePipe implements PipeTransform { transform(value: string): string { if (!value) return ''; return value.split('').reverse().join(''); } }
Pas 3: Registrar el tub en un mòdul
Per utilitzar el tub en les plantilles, cal registrar-lo en un mòdul. Normalment, es fa en el mòdul principal o en un mòdul compartit.
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ReversePipe } from './reverse.pipe'; @NgModule({ declarations: [ReversePipe], imports: [CommonModule], exports: [ReversePipe] }) export class SharedModule { }
Pas 4: Utilitzar el tub en una plantilla
Ara pots utilitzar el tub en qualsevol plantilla de la teva aplicació.
Aquest codi mostrarà: ralugnA olleH
.
Exercicis pràctics
Exercici 1: Crear un tub per capitalitzar paraules
Crea un tub que capitalitzi la primera lletra de cada paraula en una cadena de text.
Solució
- Crea el fitxer
capitalize.pipe.ts
.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'capitalize' }) export class CapitalizePipe implements PipeTransform { transform(value: string): string { if (!value) return ''; return value.replace(/\b\w/g, first => first.toLocaleUpperCase()); } }
- Registra el tub en un mòdul.
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { CapitalizePipe } from './capitalize.pipe'; @NgModule({ declarations: [CapitalizePipe], imports: [CommonModule], exports: [CapitalizePipe] }) export class SharedModule { }
- Utilitza el tub en una plantilla.
Aquest codi mostrarà: Hello Angular World
.
Exercici 2: Crear un tub per truncar text
Crea un tub que truncarà una cadena de text a una longitud específica i afegirà "..." al final si la cadena és més llarga que la longitud especificada.
Solució
- Crea el fitxer
truncate.pipe.ts
.
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'truncate' }) export class TruncatePipe implements PipeTransform { transform(value: string, limit: number = 20): string { if (!value) return ''; return value.length > limit ? value.substring(0, limit) + '...' : value; } }
- Registra el tub en un mòdul.
import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { TruncatePipe } from './truncate.pipe'; @NgModule({ declarations: [TruncatePipe], imports: [CommonModule], exports: [TruncatePipe] }) export class SharedModule { }
- Utilitza el tub en una plantilla.
Aquest codi mostrarà: This is a very long text...
.
Resum
En aquesta secció, hem après a crear tubs personalitzats a Angular. Hem vist com implementar la interfície PipeTransform
, com registrar el tub en un mòdul i com utilitzar-lo en una plantilla. També hem practicat amb alguns exercicis per reforçar els conceptes apresos. Els tubs personalitzats són una eina poderosa per transformar dades de manera senzilla i reutilitzable en les nostres aplicacions Angular.
Curs d'Angular
Mòdul 1: Introducció a Angular
- Què és Angular?
- Configuració de l'entorn de desenvolupament
- Arquitectura d'Angular
- Primera aplicació Angular
Mòdul 2: Components d'Angular
- Comprendre els components
- Crear components
- Plantilles de components
- Estils de components
- Interacció de components
Mòdul 3: Enllaç de dades i directives
- Interpolació i enllaç de propietats
- Enllaç d'esdeveniments
- Enllaç de dades bidireccional
- Directives integrades
- Directives personalitzades
Mòdul 4: Serveis i injecció de dependències
Mòdul 5: Enrutament i navegació
Mòdul 6: Formularis a Angular
Mòdul 7: Client HTTP i observables
- Introducció al client HTTP
- Fer sol·licituds HTTP
- Gestionar respostes HTTP
- Utilitzar observables
- Gestió d'errors
Mòdul 8: Gestió d'estat
- Introducció a la gestió d'estat
- Utilitzar serveis per a la gestió d'estat
- NgRx Store
- NgRx Effects
- NgRx Entity
Mòdul 9: Proves a Angular
- Proves unitàries
- Proves de components
- Proves de serveis
- Proves de cap a cap
- Simulació de dependències
Mòdul 10: Conceptes avançats d'Angular
- Angular Universal
- Optimització del rendiment
- Internacionalització (i18n)
- Tubs personalitzats
- Animacions d'Angular