🚀 SignalStore Advanced – Feature Stores auf dem nächsten Level
SignalStore ist nicht nur ein nicer Wrapper – es ist das neue Zentrum für modularen, skalierbaren State in Angular.
In diesem Beitrag zeige ich dir:
- Wie du SignalStore sinnvoll aufsetzt
- Welche Patterns du in großen Projekten brauchst
- Und warum es eine echte Alternative zu NgRx sein kann
🔧 Was ist ein Feature Store?
Ein Feature Store verwaltet den lokalen State für eine konkrete Funktionseinheit (z. B. „Benutzer bearbeiten“, „Produkte anzeigen“).
Mit SignalStore bekommst du:
- 🧠 Lesbare Struktur
- 💡 Echtzeit-Reaktivität
- ⚡ Performance ohne Overhead
🧱 Beispiel: UserFormStore
export function createUserFormStore() {
const name = signal('');
const email = signal('');
const isValid = computed(() => name().length > 1 && email().includes('@'));
return {
name,
email,
isValid,
setName: (v: string) => name.set(v),
setEmail: (v: string) => email.set(v),
};
}
➡ Reaktiv, testbar, klar – keine Klassen, keine Decorators
🧩 Integration in die Component
@Component({
standalone: true,
template: `
<input [value]="store.name()" (input)="store.setName($any($event.target).value)" />
<input [value]="store.email()" (input)="store.setEmail($any($event.target).value)" />
<button [disabled]="!store.isValid()">Speichern</button>
`
})
export class UserFormComponent {
store = createUserFormStore();
}
➡ Pure Reaktivität – kein ChangeDetectorRef, keine Subscriptions
💡 Advanced Pattern: SignalStore + API
export function createProductStore(productApi: ProductApiService) {
const products = signal<Product[]>([]);
const isLoading = signal(false);
const load = async () => {
isLoading.set(true);
const data = await firstValueFrom(productApi.getAll());
products.set(data);
isLoading.set(false);
};
return { products, isLoading, load };
}
➡ Du kannst Services reinreichen – perfekt für DI ohne Injectable
🛠 Tipps aus der Praxis
- Nutze
readonly
für Public Access - Pack die Logik ins Store-Factory, nicht in die Component
- Teile State nach Use Cases – nicht nach Tabellen!
⚠️ Don'ts
- ❌ Kein globaler Store für alles – Features isolieren!
- ❌ Kein inline
signal()
in Components – Store zentral halten! - ❌ Nicht mischen mit ViewChild + Signals ohne Konzept
✅ Fazit
SignalStore bringt:
- ✅ Modulare Architektur
- ✅ Reaktiven State ohne RxJS-Komplexität
- ✅ Einfachheit auf einem neuen Level
Wenn du Angular 18+ nutzt – SignalStore ist die Zukunft.
📍 Bald im Blog: 📐 Component Architecture in Angular – Patterns für skalierbare Komponenten
Hast du Fragen oder ein Projekt im Kopf?
Ich freue mich auf deine Nachricht. Lass uns gemeinsam deine Vision verwirklichen!
Jetzt Kontakt aufnehmen