Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Skapa ett Anpassat Rör i Angular | Bemästra Angular-direktiv och Pipes
Introduktion till Angular

bookSkapa ett Anpassat Rör i Angular

Ibland räcker inte de inbyggda rören i Angular till. Du kan behöva en unik transformation som är specifik för din applikation. I sådana fall kan du skapa ett eget anpassat rör.

Anta att du har en lista med uppgifter, och varje uppgift kan vara antingen slutförd eller inte. För att göra slutförda uppgifter visuellt framträdande vill du automatiskt lägga till en ✅-emoji till deras titlar. Istället för att hårdkoda denna logik i varje mall kan du skapa ett dedikerat rör för detta.

Hur man skapar ett anpassat rör

För att generera ett anpassat rör i Angular, använd följande CLI-kommando. Vi kallar det formatTitle, eftersom dess uppgift är att formatera uppgiftens titel baserat på dess slutförandestatus:

Detta kommer att skapa två filer:

  • format-title.pipe.ts — rörlogiken;

  • format-title.pipe.spec.ts — enhetstestfil (du kan ta bort den om du inte behöver testning just nu).

När Angular genererar pipen ser det ut ungefär så här:

pipe.ts

pipe.ts

copy

Det här gör koden:

  • Klassen FormatTitlePipe implementerar PipeTransform, vilket säkerställer att pipen har en transform-metod;

  • transform-metoden tar emot ett värde (inmatningen) och valfria argument och returnerar ett transformerat resultat. För närvarande returneras bara inmatningen som den är;

  • Pipens namn (formatTitle) definieras i @Pipe-dekorationen — det är namnet som används i mallen.

Just nu existerar pipen men gör faktiskt ingenting. Nästa steg är att lägga till den faktiska logiken.

Anpassad Pipe-implementering

Vi behöver lägga till en ✅-emoji till titeln baserat på uppgiftens slutförandestatus (task.completed). Uppdatera pipen för att tillämpa vår anpassade formateringslogik:

pipe.ts

pipe.ts

copy

Metoden transform tar två argument:

  • value — uppgiftens titel;

  • completed — ett booleskt värde som indikerar om uppgiften är klar.

Om uppgiften är slutförd (true), läggs en ✅-emoji till i slutet av titeln. Annars returneras titeln oförändrad.

Använda pipen i en mall

För att använda pipen i din Angular-mall, applicera den med pipesymbolen |:

template.html

template.html

copy

Vad som händer här:

  • task.title är värdet som skickas till pipen;

  • formatTitle:task.completed applicerar pipen och skickar in flaggan completed;

  • Titeln kommer antingen att inkludera emoji-symbolen ✅ eller inte, beroende på uppgiftens status.

Att använda pipes på detta sätt hjälper till att hålla mallarna rena och läsbara, samt flyttar formateringslogik till återanvändbar och testbar kod.

question mark

Vad gör den anpassade pipen formatTitle?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you show me the code for the custom pipe implementation?

How do I use this custom pipe in my Angular template?

What are some other use cases for custom pipes in Angular?

Awesome!

Completion rate improved to 3.13

bookSkapa ett Anpassat Rör i Angular

Svep för att visa menyn

Ibland räcker inte de inbyggda rören i Angular till. Du kan behöva en unik transformation som är specifik för din applikation. I sådana fall kan du skapa ett eget anpassat rör.

Anta att du har en lista med uppgifter, och varje uppgift kan vara antingen slutförd eller inte. För att göra slutförda uppgifter visuellt framträdande vill du automatiskt lägga till en ✅-emoji till deras titlar. Istället för att hårdkoda denna logik i varje mall kan du skapa ett dedikerat rör för detta.

Hur man skapar ett anpassat rör

För att generera ett anpassat rör i Angular, använd följande CLI-kommando. Vi kallar det formatTitle, eftersom dess uppgift är att formatera uppgiftens titel baserat på dess slutförandestatus:

Detta kommer att skapa två filer:

  • format-title.pipe.ts — rörlogiken;

  • format-title.pipe.spec.ts — enhetstestfil (du kan ta bort den om du inte behöver testning just nu).

När Angular genererar pipen ser det ut ungefär så här:

pipe.ts

pipe.ts

copy

Det här gör koden:

  • Klassen FormatTitlePipe implementerar PipeTransform, vilket säkerställer att pipen har en transform-metod;

  • transform-metoden tar emot ett värde (inmatningen) och valfria argument och returnerar ett transformerat resultat. För närvarande returneras bara inmatningen som den är;

  • Pipens namn (formatTitle) definieras i @Pipe-dekorationen — det är namnet som används i mallen.

Just nu existerar pipen men gör faktiskt ingenting. Nästa steg är att lägga till den faktiska logiken.

Anpassad Pipe-implementering

Vi behöver lägga till en ✅-emoji till titeln baserat på uppgiftens slutförandestatus (task.completed). Uppdatera pipen för att tillämpa vår anpassade formateringslogik:

pipe.ts

pipe.ts

copy

Metoden transform tar två argument:

  • value — uppgiftens titel;

  • completed — ett booleskt värde som indikerar om uppgiften är klar.

Om uppgiften är slutförd (true), läggs en ✅-emoji till i slutet av titeln. Annars returneras titeln oförändrad.

Använda pipen i en mall

För att använda pipen i din Angular-mall, applicera den med pipesymbolen |:

template.html

template.html

copy

Vad som händer här:

  • task.title är värdet som skickas till pipen;

  • formatTitle:task.completed applicerar pipen och skickar in flaggan completed;

  • Titeln kommer antingen att inkludera emoji-symbolen ✅ eller inte, beroende på uppgiftens status.

Att använda pipes på detta sätt hjälper till att hålla mallarna rena och läsbara, samt flyttar formateringslogik till återanvändbar och testbar kod.

question mark

Vad gör den anpassade pipen formatTitle?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 6
some-alt