Negli script #183 e #184 abbiamo visto come utilizzare le pipe predefinite. In questo script ci occupiamo invece di creare pipe custom che ci permettano di peronalizzare l'output di un valore in binding. Il primo passo per creare una pipe custom consiste nell'importare l'interfaccia PipeTransform.
import { Pipe, PipeTransform } from '@angular/core';
Una volta importata l'interfaccia dobbiamo creare una classe che ne implementa i metodi. PipeTransform dichiara il metodo transform che accetta in input il valore in binding e restituisce in output il valore trasformato. Una volta creata la classe, questa va decorata con il decorator Pipe per specificare il nome della pipe.
@Pipe({name: 'FirstLetterUpperCase'}) export class FirstLetterUpperCasePipe implements PipeTransform { transform(value: string, args: string[]): any { if (!value) return value; return value.charAt(0).toUpperCase() + value.substr(1); } }
Il primo parametro del metodo transform contiene il valore da trasformare mentre il secondo contiene la lista di eventuali parametri che servono a personalizzare ulteriorente la trasformazione. Ad esempio, nel caso di una data possiamo passare un parametro che specifica il formato della data.
Una volta creata la pipe, possiamo usarla nel binding esattamente come qualunque altra pipe.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Referenziare un @layer più alto in CSS
Utilizzare Model as a Service su Microsoft Azure
C# 12: Cosa c'è di nuovo e interessante
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Miglioramenti agli screen reader e al contrasto in Angular
Ottimizzazione dei block template in Angular 17
Migrare una service connection a workload identity federation in Azure DevOps
Le novità di Angular: i miglioramenti alla CLI
Gestione degli stili CSS con le regole @layer
Usare una container image come runner di GitHub Actions
Evitare il flickering dei componenti nel prerender di Blazor 8
Eseguire le GitHub Actions offline