Een Aangepaste Pipe Maken in Angular
Soms zijn de ingebouwde pipes in Angular niet toereikend. Mogelijk heb je een unieke transformatie nodig die specifiek is voor jouw applicatie. In dat geval kun je een eigen aangepaste pipe maken.
Stel, je hebt een lijst met taken en elke taak kan voltooid of niet voltooid zijn. Om voltooide taken visueel te laten opvallen, wil je automatisch een ✅-emoji aan hun titels toevoegen. In plaats van deze logica in elke template te verwerken, kun je hiervoor een speciale pipe bouwen.
Een aangepaste pipe maken
Gebruik de volgende CLI-opdracht om een aangepaste pipe in Angular te genereren. We noemen deze formatTitle, omdat deze de taak heeft om de titel van de taak te formatteren op basis van de voltooiingsstatus:
Hiermee worden twee bestanden aangemaakt:
-
format-title.pipe.ts— de pipe-logica; -
format-title.pipe.spec.ts— een bestand voor unittests (je kunt dit verwijderen als je nu geen tests nodig hebt).
Wanneer Angular de pipe genereert, ziet het er ongeveer zo uit:
pipe.ts
Dit doet deze code:
-
De
FormatTitlePipe-klasse implementeertPipeTransform, wat ervoor zorgt dat de pipe eentransform-methode heeft; -
De
transform-methode ontvangt een waarde (de invoer) en optionele argumenten en retourneert een getransformeerd resultaat. Op dit moment retourneert deze gewoon de invoer zoals die is; -
De naam van de pipe (
formatTitle) wordt gedefinieerd in de@Pipe-decorator — dat is de naam die je in de template gebruikt.
Op dit moment bestaat de pipe, maar doet deze nog niets. Laten we nu de daadwerkelijke logica toevoegen.
Implementatie van een aangepaste pipe
We moeten een ✅-emoji toevoegen aan de titel op basis van de voltooiingsstatus van de taak (task.completed). Werk de pipe bij om onze aangepaste opmaaklogica toe te passen:
pipe.ts
De transform-methode neemt twee argumenten:
-
value— de taak titel; -
completed— een boolean die aangeeft of de taak is voltooid.
Als de taak voltooid is (true), wordt er een ✅-emoji aan het einde van de titel toegevoegd. Anders wordt de titel ongewijzigd teruggegeven.
De pipe gebruiken in een template
Om de pipe in je Angular-template te gebruiken, pas je deze toe met het pipe-symbool |:
template.html
Wat gebeurt hier:
-
task.titleis de waarde die aan de pipe wordt doorgegeven; -
formatTitle:task.completedpast de pipe toe en geeft decompleted-vlag door; -
De titel bevat al dan niet de ✅-emoji, afhankelijk van de status van de taak.
Het gebruik van pipes op deze manier houdt je templates overzichtelijk en leesbaar, en verplaatst de opmaaklogica naar herbruikbare, testbare code.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
Awesome!
Completion rate improved to 3.13
Een Aangepaste Pipe Maken in Angular
Veeg om het menu te tonen
Soms zijn de ingebouwde pipes in Angular niet toereikend. Mogelijk heb je een unieke transformatie nodig die specifiek is voor jouw applicatie. In dat geval kun je een eigen aangepaste pipe maken.
Stel, je hebt een lijst met taken en elke taak kan voltooid of niet voltooid zijn. Om voltooide taken visueel te laten opvallen, wil je automatisch een ✅-emoji aan hun titels toevoegen. In plaats van deze logica in elke template te verwerken, kun je hiervoor een speciale pipe bouwen.
Een aangepaste pipe maken
Gebruik de volgende CLI-opdracht om een aangepaste pipe in Angular te genereren. We noemen deze formatTitle, omdat deze de taak heeft om de titel van de taak te formatteren op basis van de voltooiingsstatus:
Hiermee worden twee bestanden aangemaakt:
-
format-title.pipe.ts— de pipe-logica; -
format-title.pipe.spec.ts— een bestand voor unittests (je kunt dit verwijderen als je nu geen tests nodig hebt).
Wanneer Angular de pipe genereert, ziet het er ongeveer zo uit:
pipe.ts
Dit doet deze code:
-
De
FormatTitlePipe-klasse implementeertPipeTransform, wat ervoor zorgt dat de pipe eentransform-methode heeft; -
De
transform-methode ontvangt een waarde (de invoer) en optionele argumenten en retourneert een getransformeerd resultaat. Op dit moment retourneert deze gewoon de invoer zoals die is; -
De naam van de pipe (
formatTitle) wordt gedefinieerd in de@Pipe-decorator — dat is de naam die je in de template gebruikt.
Op dit moment bestaat de pipe, maar doet deze nog niets. Laten we nu de daadwerkelijke logica toevoegen.
Implementatie van een aangepaste pipe
We moeten een ✅-emoji toevoegen aan de titel op basis van de voltooiingsstatus van de taak (task.completed). Werk de pipe bij om onze aangepaste opmaaklogica toe te passen:
pipe.ts
De transform-methode neemt twee argumenten:
-
value— de taak titel; -
completed— een boolean die aangeeft of de taak is voltooid.
Als de taak voltooid is (true), wordt er een ✅-emoji aan het einde van de titel toegevoegd. Anders wordt de titel ongewijzigd teruggegeven.
De pipe gebruiken in een template
Om de pipe in je Angular-template te gebruiken, pas je deze toe met het pipe-symbool |:
template.html
Wat gebeurt hier:
-
task.titleis de waarde die aan de pipe wordt doorgegeven; -
formatTitle:task.completedpast de pipe toe en geeft decompleted-vlag door; -
De titel bevat al dan niet de ✅-emoji, afhankelijk van de status van de taak.
Het gebruik van pipes op deze manier houdt je templates overzichtelijk en leesbaar, en verplaatst de opmaaklogica naar herbruikbare, testbare code.
Bedankt voor je feedback!