Lage 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
Dette gjør koden:
-
Klassen
FormatTitlePipe
implementererPipeTransform
, som sikrer at pipen har entransform
-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
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
Dette skjer her:
-
task.title
er verdien som sendes til pipen; -
formatTitle:task.completed
bruker pipen og sender inncompleted
-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.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
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
Lage 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
Dette gjør koden:
-
Klassen
FormatTitlePipe
implementererPipeTransform
, som sikrer at pipen har entransform
-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
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
Dette skjer her:
-
task.title
er verdien som sendes til pipen; -
formatTitle:task.completed
bruker pipen og sender inncompleted
-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.
Takk for tilbakemeldingene dine!