Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Lage en Egendefinert Pipe i Angular | Mastering Angular Directives and Pipes
Introduksjon til Angular

bookLage en Egendefinert Pipe i Angular

Noen ganger er ikke de innebygde rørene i Angular tilstrekkelige. Du kan ha behov for en unik transformasjon som er spesifikk for din applikasjon. I slike tilfeller kan du lage ditt eget egendefinerte rør.

La oss si at du har en liste med oppgaver, og hver oppgave kan enten være fullført eller ikke. For å gjøre fullførte oppgaver mer synlige, ønsker du automatisk å legge til en ✅-emoji i tittelen deres. I stedet for å hardkode denne logikken i hver mal, kan du lage et dedikert rør for dette.

Hvordan lage et egendefinert rør

For å generere et egendefinert rør i Angular, bruk følgende CLI-kommando. Vi kaller det formatTitle, siden dets oppgave er å formatere oppgavetittelen basert på om den er fullført:

Dette vil opprette to filer:

  • format-title.pipe.ts — rør-logikken;

  • format-title.pipe.spec.ts — en enhetstestfil (du kan slette den hvis du ikke trenger testing akkurat nå).

Når Angular genererer pipen, ser det omtrent slik ut:

pipe.ts

pipe.ts

copy

Dette gjør koden:

  • Klassen FormatTitlePipe implementerer PipeTransform, som sikrer at pipen har en transform-metode;

  • transform-metoden mottar en verdi (input) og valgfrie argumenter, og returnerer et transformert resultat. Foreløpig returnerer den bare input uendret;

  • Pipens navn (formatTitle) er definert i @Pipe-dekoren — det er navnet som brukes i malen.

Akkurat nå eksisterer pipen, men den gjør ingenting. La oss legge til selve logikken neste gang.

Implementering av egendefinert pipe

Vi må legge til en ✅-emoji til tittelen basert på oppgavens fullføringsstatus (task.completed). Oppdater pipen for å bruke vår egendefinerte formateringslogikk:

pipe.ts

pipe.ts

copy

Metoden transform tar to argumenter:

  • value — oppgavetittelen;

  • completed — en boolsk verdi som indikerer om oppgaven er fullført.

Hvis oppgaven er fullført (true), legges en ✅-emoji til på slutten av tittelen. Ellers returneres tittelen uendret.

Bruke pipen i en mal

For å bruke pipen i Angular-malen din, bruk pipesymbolet |:

template.html

template.html

copy

Dette skjer her:

  • task.title er verdien som sendes til pipen;

  • formatTitle:task.completed bruker pipen og sender inn completed-flagget;

  • Tittelen vil enten inkludere ✅-emojien eller ikke, avhengig av oppgavens status.

Å bruke piper på denne måten bidrar til å holde malene dine ryddige og lesbare, og flytter formateringslogikken inn i gjenbrukbar og testbar kode.

question mark

Hva gjør den egendefinerte pipen formatTitle?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.13

bookLage en Egendefinert Pipe i Angular

Sveip for å vise menyen

Noen ganger er ikke de innebygde rørene i Angular tilstrekkelige. Du kan ha behov for en unik transformasjon som er spesifikk for din applikasjon. I slike tilfeller kan du lage ditt eget egendefinerte rør.

La oss si at du har en liste med oppgaver, og hver oppgave kan enten være fullført eller ikke. For å gjøre fullførte oppgaver mer synlige, ønsker du automatisk å legge til en ✅-emoji i tittelen deres. I stedet for å hardkode denne logikken i hver mal, kan du lage et dedikert rør for dette.

Hvordan lage et egendefinert rør

For å generere et egendefinert rør i Angular, bruk følgende CLI-kommando. Vi kaller det formatTitle, siden dets oppgave er å formatere oppgavetittelen basert på om den er fullført:

Dette vil opprette to filer:

  • format-title.pipe.ts — rør-logikken;

  • format-title.pipe.spec.ts — en enhetstestfil (du kan slette den hvis du ikke trenger testing akkurat nå).

Når Angular genererer pipen, ser det omtrent slik ut:

pipe.ts

pipe.ts

copy

Dette gjør koden:

  • Klassen FormatTitlePipe implementerer PipeTransform, som sikrer at pipen har en transform-metode;

  • transform-metoden mottar en verdi (input) og valgfrie argumenter, og returnerer et transformert resultat. Foreløpig returnerer den bare input uendret;

  • Pipens navn (formatTitle) er definert i @Pipe-dekoren — det er navnet som brukes i malen.

Akkurat nå eksisterer pipen, men den gjør ingenting. La oss legge til selve logikken neste gang.

Implementering av egendefinert pipe

Vi må legge til en ✅-emoji til tittelen basert på oppgavens fullføringsstatus (task.completed). Oppdater pipen for å bruke vår egendefinerte formateringslogikk:

pipe.ts

pipe.ts

copy

Metoden transform tar to argumenter:

  • value — oppgavetittelen;

  • completed — en boolsk verdi som indikerer om oppgaven er fullført.

Hvis oppgaven er fullført (true), legges en ✅-emoji til på slutten av tittelen. Ellers returneres tittelen uendret.

Bruke pipen i en mal

For å bruke pipen i Angular-malen din, bruk pipesymbolet |:

template.html

template.html

copy

Dette skjer her:

  • task.title er verdien som sendes til pipen;

  • formatTitle:task.completed bruker pipen og sender inn completed-flagget;

  • Tittelen vil enten inkludere ✅-emojien eller ikke, avhengig av oppgavens status.

Å bruke piper på denne måten bidrar til å holde malene dine ryddige og lesbare, og flytter formateringslogikken inn i gjenbrukbar og testbar kode.

question mark

Hva gjør den egendefinerte pipen formatTitle?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 6
some-alt