Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Oppretting av en Egendefinert Tjeneste i Angular | Services and Dependency Injection in Angular
Introduksjon til Angular

bookOppretting av en Egendefinert Tjeneste i Angular

Opprette en tjeneste

Angular tilbyr en praktisk CLI-kommando for raskt å generere en tjeneste, som oppretter nødvendige filer og importerer det som trengs:

Etter å ha kjørt denne kommandoen, oppretter Angular to filer:

  • task.service.ts — selve tjenestefilen;

  • task.service.spec.ts — en testfil (kan slettes).

Her er startinnholdet i task.service.ts:

task-service.ts

task-service.ts

copy

Dekoratoren @Injectable informerer Angular om at denne tjenesten kan injiseres i andre klasser.

Delen providedIn: 'root' betyr at Angular automatisk registrerer tjenesten i rotmodulen og oppretter én enkelt instans av den for hele applikasjonen.

Note
Definisjon

Singleton er et designmønster som sikrer at en klasse kun har én instans og gir et globalt tilgangspunkt til denne.

Komponent A, komponent B eller hvilken som helst annen komponent — alle vil få samme instans av tjenesten. Dette er svært praktisk fordi du kan lagre delte data (som en oppgaveliste) og unngå å duplisere logikk.

Derfor blir en tjeneste den eneste sannhetskilden for en bestemt del av logikken eller dataene i appen din. Hvis du er nysgjerrig, kan du lære mer om singleton-mønsteret i denne artikkelen.

Legge til logikk i tjenesten

La oss gå videre til å bygge logikken for tjenesten din. Dette er hva du ønsker at den skal gjøre:

  • Lagre en liste over oppgaver;

  • Returnere oppgavelisten;

  • Slette oppgaver;

  • Veksle fullføringsstatus for oppgaver.

Først definerer vi hvordan en oppgave ser ut ved å opprette et TypeScript-grensesnitt:

task-interface.ts

task-interface.ts

copy

Dette grensesnittet hjelper til med å tydelig definere strukturen til en oppgave — det inkluderer en id, en tittel og en fullført-status. Du har ikke brukt grensesnitt tidligere, men å legge til et her gjør koden enklere å forstå og arbeide med.

Nå skal vi bygge tjenesten som håndterer oppgavelisten din:

task-service.ts

task-service.ts

copy

I dette eksemplet lagres oppgavedataene direkte i koden i et privat tasks-array.

For å gjøre oppgavelisten tilgjengelig for andre deler av applikasjonen, brukes metoden getTasks(). Den returnerer en kopi av arrayet ved hjelp av spread-syntaksen ([...]), noe som bidrar til å beskytte de opprinnelige dataene mot utilsiktede endringer.

Metoden deleteTask(id: number) fjerner en oppgave ved å filtrere ut den som har samsvarende ID, og oppdaterer listen.

En annen viktig metode er toggleTaskStatus(id: number). Den finner oppgaven basert på ID og bytter status for om oppgaven er fullført — hvis oppgaven var markert som fullført (true), blir den ufullført (false), og omvendt.

Note
Merk

Du kjenner kanskje igjen mye av denne logikken fra din TaskListComponent. Nå er alt flyttet inn i TaskService, noe som bidrar til å rydde opp i komponentene dine og samle logikken på ett sted.

Denne tjenesten er nå grunnlaget som gjør at komponentene dine kan samhandle med oppgavelisten — uten å duplisere logikk.

1. Hvorfor oppretter du en tjeneste i Angular?

2. Hva betyr providedIn: 'root' i @Injectable-dekortøren?

3. Hvorfor returnerer du [...this.tasks] i stedet for bare this.tasks i getTasks()?

question mark

Hvorfor oppretter du en tjeneste i Angular?

Select the correct answer

question mark

Hva betyr providedIn: 'root' i @Injectable-dekortøren?

Select the correct answer

question mark

Hvorfor returnerer du [...this.tasks] i stedet for bare this.tasks i getTasks()?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2

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

bookOppretting av en Egendefinert Tjeneste i Angular

Sveip for å vise menyen

Opprette en tjeneste

Angular tilbyr en praktisk CLI-kommando for raskt å generere en tjeneste, som oppretter nødvendige filer og importerer det som trengs:

Etter å ha kjørt denne kommandoen, oppretter Angular to filer:

  • task.service.ts — selve tjenestefilen;

  • task.service.spec.ts — en testfil (kan slettes).

Her er startinnholdet i task.service.ts:

task-service.ts

task-service.ts

copy

Dekoratoren @Injectable informerer Angular om at denne tjenesten kan injiseres i andre klasser.

Delen providedIn: 'root' betyr at Angular automatisk registrerer tjenesten i rotmodulen og oppretter én enkelt instans av den for hele applikasjonen.

Note
Definisjon

Singleton er et designmønster som sikrer at en klasse kun har én instans og gir et globalt tilgangspunkt til denne.

Komponent A, komponent B eller hvilken som helst annen komponent — alle vil få samme instans av tjenesten. Dette er svært praktisk fordi du kan lagre delte data (som en oppgaveliste) og unngå å duplisere logikk.

Derfor blir en tjeneste den eneste sannhetskilden for en bestemt del av logikken eller dataene i appen din. Hvis du er nysgjerrig, kan du lære mer om singleton-mønsteret i denne artikkelen.

Legge til logikk i tjenesten

La oss gå videre til å bygge logikken for tjenesten din. Dette er hva du ønsker at den skal gjøre:

  • Lagre en liste over oppgaver;

  • Returnere oppgavelisten;

  • Slette oppgaver;

  • Veksle fullføringsstatus for oppgaver.

Først definerer vi hvordan en oppgave ser ut ved å opprette et TypeScript-grensesnitt:

task-interface.ts

task-interface.ts

copy

Dette grensesnittet hjelper til med å tydelig definere strukturen til en oppgave — det inkluderer en id, en tittel og en fullført-status. Du har ikke brukt grensesnitt tidligere, men å legge til et her gjør koden enklere å forstå og arbeide med.

Nå skal vi bygge tjenesten som håndterer oppgavelisten din:

task-service.ts

task-service.ts

copy

I dette eksemplet lagres oppgavedataene direkte i koden i et privat tasks-array.

For å gjøre oppgavelisten tilgjengelig for andre deler av applikasjonen, brukes metoden getTasks(). Den returnerer en kopi av arrayet ved hjelp av spread-syntaksen ([...]), noe som bidrar til å beskytte de opprinnelige dataene mot utilsiktede endringer.

Metoden deleteTask(id: number) fjerner en oppgave ved å filtrere ut den som har samsvarende ID, og oppdaterer listen.

En annen viktig metode er toggleTaskStatus(id: number). Den finner oppgaven basert på ID og bytter status for om oppgaven er fullført — hvis oppgaven var markert som fullført (true), blir den ufullført (false), og omvendt.

Note
Merk

Du kjenner kanskje igjen mye av denne logikken fra din TaskListComponent. Nå er alt flyttet inn i TaskService, noe som bidrar til å rydde opp i komponentene dine og samle logikken på ett sted.

Denne tjenesten er nå grunnlaget som gjør at komponentene dine kan samhandle med oppgavelisten — uten å duplisere logikk.

1. Hvorfor oppretter du en tjeneste i Angular?

2. Hva betyr providedIn: 'root' i @Injectable-dekortøren?

3. Hvorfor returnerer du [...this.tasks] i stedet for bare this.tasks i getTasks()?

question mark

Hvorfor oppretter du en tjeneste i Angular?

Select the correct answer

question mark

Hva betyr providedIn: 'root' i @Injectable-dekortøren?

Select the correct answer

question mark

Hvorfor returnerer du [...this.tasks] i stedet for bare this.tasks i getTasks()?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 4. Kapittel 2
some-alt