Service-Injektion in eine Komponente
Sie haben den TaskService erstellt, der das Speichern und Verwalten der Aufgabenliste übernimmt. Der Service selbst interagiert jedoch nicht mit der Benutzeroberfläche. Um die Daten aus dem Service in das Template der Komponente zu bringen, muss der Service in die entsprechende Komponente injiziert werden.
Im Folgenden erfahren Sie, wie Angular mithilfe der Dependency Injection (DI) automatisch Services mit Komponenten verbindet und wie der Service innerhalb der Komponente funktioniert.
Was ist Dependency Injection?
Dependency Injection (DI) ist ein Entwurfsmuster, bei dem Angular die benötigten Abhängigkeiten (wie Services) automatisch in den Konstruktor einer Komponente einfügt.
Dank DI erstellen Komponenten die Service-Instanzen nicht selbst – sie erhalten einfach eine bereits erstellte Instanz. Angular übernimmt die Bereitstellung der benötigten Objekte für alle, die sie benötigen.
Dies funktioniert, weil der Service wie folgt dekoriert ist:
@Injectable({
providedIn: 'root'
})
Dieser Decorator weist Angular an, eine einzelne Instanz (Singleton) des Dienstes für die gesamte Anwendung zu erstellen und sie für DI verfügbar zu machen.
Dienst in eine Komponente injizieren
Nun wird der TaskService in die TaskListComponent injiziert, damit diese auf die Aufgabenliste zugreifen und mit ihr interagieren kann.
So sieht der Code der Komponente aus:
task-list.ts
Wir importieren den TaskService, das Task-Interface sowie weitere für das Template benötigte Komponenten und Module.
Im Konstruktor der Komponente wird der Service über Dependency Injection hinzugefügt:
task-list.ts
Der Service wird als privates Feld gespeichert, um ihn in Methoden der Komponente zu verwenden. Direkt nach der Erstellung der Komponente (im Konstruktor) wird die Aufgabenliste abgerufen. Diese Liste wird anschließend im HTML-Template verwendet.
Die Methoden deleteTask und toggleStatus rufen die Funktionen des Service auf, um eine Aufgabe zu löschen oder ihren Status umzuschalten, und aktualisieren anschließend das lokale tasks-Array, sodass die Benutzeroberfläche die Änderungen widerspiegelt.
Dieser Ansatz hält die Komponente einfach: Sie weiß nicht, wie die Daten gespeichert oder verarbeitet werden – sie fordert lediglich den Service auf, sie zu aktualisieren. Dies trennt die Verantwortlichkeiten: Komponenten kümmern sich um die Ansicht, Services um die Daten.
1. Was ist Dependency Injection (DI) in Angular?
2. Warum aktualisieren wir this.tasks nach dem Aufruf von deleteTask oder toggleStatus?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.13
Service-Injektion in eine Komponente
Swipe um das Menü anzuzeigen
Sie haben den TaskService erstellt, der das Speichern und Verwalten der Aufgabenliste übernimmt. Der Service selbst interagiert jedoch nicht mit der Benutzeroberfläche. Um die Daten aus dem Service in das Template der Komponente zu bringen, muss der Service in die entsprechende Komponente injiziert werden.
Im Folgenden erfahren Sie, wie Angular mithilfe der Dependency Injection (DI) automatisch Services mit Komponenten verbindet und wie der Service innerhalb der Komponente funktioniert.
Was ist Dependency Injection?
Dependency Injection (DI) ist ein Entwurfsmuster, bei dem Angular die benötigten Abhängigkeiten (wie Services) automatisch in den Konstruktor einer Komponente einfügt.
Dank DI erstellen Komponenten die Service-Instanzen nicht selbst – sie erhalten einfach eine bereits erstellte Instanz. Angular übernimmt die Bereitstellung der benötigten Objekte für alle, die sie benötigen.
Dies funktioniert, weil der Service wie folgt dekoriert ist:
@Injectable({
providedIn: 'root'
})
Dieser Decorator weist Angular an, eine einzelne Instanz (Singleton) des Dienstes für die gesamte Anwendung zu erstellen und sie für DI verfügbar zu machen.
Dienst in eine Komponente injizieren
Nun wird der TaskService in die TaskListComponent injiziert, damit diese auf die Aufgabenliste zugreifen und mit ihr interagieren kann.
So sieht der Code der Komponente aus:
task-list.ts
Wir importieren den TaskService, das Task-Interface sowie weitere für das Template benötigte Komponenten und Module.
Im Konstruktor der Komponente wird der Service über Dependency Injection hinzugefügt:
task-list.ts
Der Service wird als privates Feld gespeichert, um ihn in Methoden der Komponente zu verwenden. Direkt nach der Erstellung der Komponente (im Konstruktor) wird die Aufgabenliste abgerufen. Diese Liste wird anschließend im HTML-Template verwendet.
Die Methoden deleteTask und toggleStatus rufen die Funktionen des Service auf, um eine Aufgabe zu löschen oder ihren Status umzuschalten, und aktualisieren anschließend das lokale tasks-Array, sodass die Benutzeroberfläche die Änderungen widerspiegelt.
Dieser Ansatz hält die Komponente einfach: Sie weiß nicht, wie die Daten gespeichert oder verarbeitet werden – sie fordert lediglich den Service auf, sie zu aktualisieren. Dies trennt die Verantwortlichkeiten: Komponenten kümmern sich um die Ansicht, Services um die Daten.
1. Was ist Dependency Injection (DI) in Angular?
2. Warum aktualisieren wir this.tasks nach dem Aufruf von deleteTask oder toggleStatus?
Danke für Ihr Feedback!