Tjä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?
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
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
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
?
Tack för dina kommentarer!
Fråga AI
Fråga AI
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
Tjä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?
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
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
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
?
Tack för dina kommentarer!