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.
Anta 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å fullføringsstatus:
Dette vil opprette to filer:
-
format-title.pipe.ts— rørlogikken; -
format-title.pipe.spec.ts— en enhetstestfil (du kan slette den hvis du ikke trenger testing nå).
Når Angular genererer pipen, ser det omtrent slik ut:
pipe.ts
Dette gjør koden:
-
Klassen
FormatTitlePipeimplementererPipeTransform, 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 — dette er navnet som brukes i malen.
For øyeblikket eksisterer pipen, men den gjør ingenting. Neste steg er å legge til selve logikken.
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.titleer verdien som sendes til pipen; -
formatTitle:task.completedbruker pipen og sender inncompleted-flagget; -
Tittelen vil enten inkludere ✅-emojien eller ikke, avhengig av statusen til oppgaven.
Å bruke piper på denne måten bidrar til å holde malene rene og lesbare, og flytter formateringslogikken til 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
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
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.
Anta 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å fullføringsstatus:
Dette vil opprette to filer:
-
format-title.pipe.ts— rørlogikken; -
format-title.pipe.spec.ts— en enhetstestfil (du kan slette den hvis du ikke trenger testing nå).
Når Angular genererer pipen, ser det omtrent slik ut:
pipe.ts
Dette gjør koden:
-
Klassen
FormatTitlePipeimplementererPipeTransform, 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 — dette er navnet som brukes i malen.
For øyeblikket eksisterer pipen, men den gjør ingenting. Neste steg er å legge til selve logikken.
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.titleer verdien som sendes til pipen; -
formatTitle:task.completedbruker pipen og sender inncompleted-flagget; -
Tittelen vil enten inkludere ✅-emojien eller ikke, avhengig av statusen til oppgaven.
Å bruke piper på denne måten bidrar til å holde malene rene og lesbare, og flytter formateringslogikken til gjenbrukbar og testbar kode.
Takk for tilbakemeldingene dine!