In der dynamischen Welt der Angular-Entwicklung spielt das State-Management eine entscheidende Rolle für die Effizienz und Wartbarkeit von Anwendungen. Mit der Einführung von NgRx SignalStore hat sich ein leistungsstarkes Werkzeug etabliert, das Entwicklern eine robuste und zugleich flexible Lösung für das State-Management bietet. In diesem Artikel tauchen wir tief in die Funktionen von SignalStore ein und beleuchten, wie es das Aufgabenmanagement in Angular-Anwendungen revolutioniert.
Was ist NgRx SignalStore?
NgRx SignalStore ist eine umfassende State-Management-Lösung, die native Unterstützung für Angular Signals bietet. Es ermöglicht Entwicklern, den Zustand ihrer Anwendung effizient zu verwalten und dabei von der reaktiven Natur von Signals zu profitieren. Im Gegensatz zu traditionellen State-Management-Ansätzen bietet SignalStore eine leichtere und intuitivere Methode, um den Anwendungszustand zu handhaben.

Kernkomponenten von SignalStore
SignalStore basiert auf vier fundamentalen Komponenten, die das Rückgrat seines State-Managements bilden:
- State: Im Zentrum von SignalStore stehen die sogenannten Signals, die den Zustand der Anwendung in Echtzeit repräsentieren. Diese observierbaren Werte aktualisieren sich automatisch bei Änderungen des zugrunde liegenden Zustands.
- Methoden: SignalStore stellt Methoden bereit, die auf den Zustand einwirken und es ermöglichen, diesen direkt zu manipulieren und zu aktualisieren. Dies bietet einen bequemen Weg, um mit dem Zustand zu interagieren, ohne auf externe State-Manager angewiesen zu sein.
- Selektoren: Selektoren sind Funktionen, die berechnete Werte aus dem Zustand ableiten. Sie bieten einen präzisen und wartbaren Ansatz, um auf spezifische Teile des Zustands zuzugreifen, ohne diesen direkt den Komponenten auszusetzen.
- Hooks: Hooks sind Funktionen, die bei kritischen Lebenszyklusereignissen, wie der Initialisierung und Zerstörung von Komponenten, ausgelöst werden. Sie ermöglichen es, Aktionen basierend auf diesen Ereignissen durchzuführen, wie z. B. das Laden von Daten oder das Aktualisieren des Zustands während der Übergänge von Komponenten.
Erstellen eines SignalStores und Definieren des Zustands
Um mit SignalStore zu beginnen, muss zunächst das @ngrx/signals
-Paket installiert werden:
bashKopierenBearbeitennpm install @ngrx/signals
Anschließend kann der Zustand definiert werden:
typescriptKopierenBearbeitenimport { signalState } from '@ngrx/signals';
const state = signalState({ /* Zustand hier definieren */ });
Die Manipulation des Zustands erfolgt elegant über die patchState
-Methode:
typescriptKopierenBearbeitenupdateStateMethod() {
patchState(this.state, (state) => ({ someProp: state.someProp + 1 }));
}
Die patchState
-Methode ermöglicht es, den Zustand auf flache Weise zu aktualisieren, wodurch nur die angegebenen Eigenschaften geändert werden. Dieser Ansatz verbessert die Leistung, indem die Anzahl der Zustandsänderungen minimiert wird.
Erste Schritte für die Aufgabenverwaltungs-App
Beginnen wir mit der Erstellung einer Schnittstelle für eine Task
und platzieren diese in einer task.ts
-Datei:
typescriptKopierenBearbeitenexport interface Task {
id: string;
value: string;
completed: boolean;
}
Die finale Struktur der App könnte wie folgt aussehen:
cssKopierenBearbeitensrc/
├── app/
│ ├── task/
│ │ ├── task.component.ts
│ │ ├── task.service.ts
│ │ ├── task.store.ts
│ │ └── task.ts
│ ├── app.component.ts
│ └── app.module.ts
└── main.ts
Unser TaskService
in task.service.ts
könnte folgendermaßen aussehen:
typescriptKopierenBearbeitenimport { Injectable } from '@angular/core';
import { Task } from './task';
@Injectable({
providedIn: 'root',
})
export class TaskService {
private taskList: Task[] = [
// Beispielaufgaben hier hinzufügen
];
getTasks() {
return this.taskList;
}
addTask(task: Task) {
this.taskList.push(task);
}
updateTask(updatedTask: Task) {
const index = this.taskList.findIndex((task) => task.id === updatedTask.id);
if (index !== -1) {
this.taskList[index] = updatedTask;
}
}
deleteTask(taskId: string) {
this.taskList = this.taskList.filter((task) => task.id !== taskId);
}
}
Also read: Verena Breier Julian Nagelsmann: Eine besondere Verbindung

Fazit
NgRx SignalStore bietet eine elegante und effiziente Lösung für das State-Management in Angular-Anwendungen. Durch seine leichte Architektur und die nahtlose Integration von Angular Signals ermöglicht es Entwicklern, den Anwendungszustand auf intuitive Weise zu verwalten. Ob Sie eine neue Anwendung starten oder eine bestehende verbessern möchten, SignalStore stellt ein wertvolles Werkzeug dar, das Einfachheit, Flexibilität und Leistung in der dynamischen Welt der Angular-Entwicklung vereint.
Für eine praktische Demonstration der Integration von HTTP-Aufrufen mit NgRx SignalStore können Sie sich dieses Video ansehen: