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 | Tjenester og Avhengighetsinjeksjon i 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 forteller Angular 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 den.

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å duplisering av logikk.

Derfor blir en tjeneste den eneste sannhetskilden for en bestemt del av appens logikk eller data. 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 skal tjenesten gjøre:

  • Lagrer en liste med oppgaver;

  • Returnerer oppgavelisten;

  • Sletter oppgaver;

  • Veksler mellom fullført-status 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 ved hjelp av ID og bytter status for om oppgaven er fullført — hvis oppgaven var merket 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 holde logikken samlet 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 forteller Angular 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 den.

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å duplisering av logikk.

Derfor blir en tjeneste den eneste sannhetskilden for en bestemt del av appens logikk eller data. 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 skal tjenesten gjøre:

  • Lagrer en liste med oppgaver;

  • Returnerer oppgavelisten;

  • Sletter oppgaver;

  • Veksler mellom fullført-status 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 ved hjelp av ID og bytter status for om oppgaven er fullført — hvis oppgaven var merket 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 holde logikken samlet 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