Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Tjänsteinjektion i en Komponent | Services and Dependency Injection in Angular
Introduktion till Angular

bookTjänsteinjektion i en Komponent

Du har skapat TaskService, som hanterar lagring och hantering av uppgiftslistan. Tjänsten i sig interagerar dock inte med användargränssnittet. För att få data från tjänsten till komponentens mall behöver du injicera tjänsten i motsvarande komponent.

Nu kommer du att se hur Angular automatiskt hjälper till att koppla tjänster till komponenter med hjälp av Dependency Injection (DI) och hur tjänsten fungerar inuti komponenten.

Vad är Dependency Injection?

Note
Definition

Dependency Injection (DI) är ett designmönster där Angular automatiskt injicerar de nödvändiga beroendena (som tjänster) i en komponents konstruktor.

Tack vare DI skapar komponenter inte själva instanser av tjänster — de får helt enkelt en redan skapad instans. Angular hanterar leveransen av de nödvändiga objekten till de som behöver dem.

Detta fungerar eftersom tjänsten är dekorerad med:

@Injectable({
  providedIn: 'root'
})

Denna dekoratör instruerar Angular att skapa en enda instans (singleton) av tjänsten för hela applikationen och göra den tillgänglig för DI.

Injicera tjänsten i en komponent

Nu ska vi injicera TaskService i TaskListComponent så att den kan hämta och interagera med uppgiftslistan.

Så här ser komponentkoden ut:

task-list.ts

task-list.ts

copy

Vi importerar TaskService, Task-gränssnittet samt andra komponenter och moduler som behövs för mallen.

I komponentens konstruktor lägger vi till tjänsten via beroendeinjektion:

task-list.ts

task-list.ts

copy

Du lagrar den som ett privat fält för att använda i komponentens metoder. Direkt efter att komponenten har skapats (inuti konstruktorn) hämtar vi uppgiftslistan. Denna lista används sedan i HTML-mallen.

Metoderna deleteTask och toggleStatus anropar tjänstens funktioner för att ta bort en uppgift eller växla dess status, och uppdaterar sedan den lokala arrayen tasks så att användargränssnittet återspeglar ändringarna.

Detta tillvägagångssätt håller komponenten enkel: den vet inte hur data lagras eller hanteras — den ber bara tjänsten att uppdatera den. Detta separerar ansvarsområden: komponenter hanterar vyn och tjänster hanterar datan.

1. Vad är Dependency Injection (DI) i Angular?

2. Varför uppdaterar vi this.tasks efter att ha anropat deleteTask eller toggleStatus?

question mark

Vad är Dependency Injection (DI) i Angular?

Select the correct answer

question mark

Varför uppdaterar vi this.tasks efter att ha anropat deleteTask eller toggleStatus?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Awesome!

Completion rate improved to 3.13

bookTjänsteinjektion i en Komponent

Svep för att visa menyn

Du har skapat TaskService, som hanterar lagring och hantering av uppgiftslistan. Tjänsten i sig interagerar dock inte med användargränssnittet. För att få data från tjänsten till komponentens mall behöver du injicera tjänsten i motsvarande komponent.

Nu kommer du att se hur Angular automatiskt hjälper till att koppla tjänster till komponenter med hjälp av Dependency Injection (DI) och hur tjänsten fungerar inuti komponenten.

Vad är Dependency Injection?

Note
Definition

Dependency Injection (DI) är ett designmönster där Angular automatiskt injicerar de nödvändiga beroendena (som tjänster) i en komponents konstruktor.

Tack vare DI skapar komponenter inte själva instanser av tjänster — de får helt enkelt en redan skapad instans. Angular hanterar leveransen av de nödvändiga objekten till de som behöver dem.

Detta fungerar eftersom tjänsten är dekorerad med:

@Injectable({
  providedIn: 'root'
})

Denna dekoratör instruerar Angular att skapa en enda instans (singleton) av tjänsten för hela applikationen och göra den tillgänglig för DI.

Injicera tjänsten i en komponent

Nu ska vi injicera TaskService i TaskListComponent så att den kan hämta och interagera med uppgiftslistan.

Så här ser komponentkoden ut:

task-list.ts

task-list.ts

copy

Vi importerar TaskService, Task-gränssnittet samt andra komponenter och moduler som behövs för mallen.

I komponentens konstruktor lägger vi till tjänsten via beroendeinjektion:

task-list.ts

task-list.ts

copy

Du lagrar den som ett privat fält för att använda i komponentens metoder. Direkt efter att komponenten har skapats (inuti konstruktorn) hämtar vi uppgiftslistan. Denna lista används sedan i HTML-mallen.

Metoderna deleteTask och toggleStatus anropar tjänstens funktioner för att ta bort en uppgift eller växla dess status, och uppdaterar sedan den lokala arrayen tasks så att användargränssnittet återspeglar ändringarna.

Detta tillvägagångssätt håller komponenten enkel: den vet inte hur data lagras eller hanteras — den ber bara tjänsten att uppdatera den. Detta separerar ansvarsområden: komponenter hanterar vyn och tjänster hanterar datan.

1. Vad är Dependency Injection (DI) i Angular?

2. Varför uppdaterar vi this.tasks efter att ha anropat deleteTask eller toggleStatus?

question mark

Vad är Dependency Injection (DI) i Angular?

Select the correct answer

question mark

Varför uppdaterar vi this.tasks efter att ha anropat deleteTask eller toggleStatus?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 3
some-alt