⚡ Signals + RxJS – Best of both worlds für reactive Power

Angular hat mit Signals einen riesigen Schritt gemacht.
Aber: RxJS bleibt relevant – vor allem für externe Streams, Events & komplexe Abhängigkeiten.

In diesem Beitrag zeige ich dir:

  • Wann du Signals nimmst
  • Wann RxJS die bessere Wahl ist
  • Und wie du beides clever kombinierst

🔁 1. Signals = State, RxJS = Streams

Signals RxJS
Lokal, synchron Async, eventbasiert
Für View-State Für Websockets, Timers, User-Input
signal(), computed() Observable, pipe, map

➡ Nutze Signals für App-internen UI-State
➡ Nutze RxJS für alles, was von außen kommt


⚙️ 2. Beispiel: Signal + RxJS Subscription

readonly count = signal(0);

interval(1000).subscribe(() => {
  this.count.update(c => c + 1);
});

➡ Kombiniert UI-State (Signal) mit externem Stream (RxJS)


🧠 3. Observable to Signal

readonly users$ = this.api.getUsers();

readonly users = toSignal(this.users$, { initialValue: [] });

toSignal() konvertiert Observable in reaktiven Signal-State


🔄 4. Signal to Observable

import { fromSignal } from '@angular/core/rxjs-interop';

readonly input = signal('');
readonly input$ = fromSignal(input);

➡ Ideal, wenn du input$ in einem pipe() brauchst (z. B. debounce, distinctUntilChanged)


🧪 5. Combine the best

combineLatest([
  fromSignal(this.query),
  this.api.getItems()
]).pipe(
  map(([query, items]) => items.filter(i => i.name.includes(query)))
);

➡ Kombination von imperativem UI-State (Signals) und asynchronen Datenquellen


✅ Fazit

Nutze das Beste aus beiden Welten:

  • Signals für lokalen UI-State, Computations, Performance
  • RxJS für externe Daten, Streams, Event-Pipelines

Wenn du beides verstehst – hast du Angular-Reactiveness gemeistert.


📍 Bald im Blog: 📚 Angular Knowledge Graph – wie du dein Team skalierst, ohne die Kontrolle zu verlieren

Hast du Fragen oder ein Projekt im Kopf?

Ich freue mich auf deine Nachricht. Lass uns gemeinsam deine Vision verwirklichen!

Jetzt Kontakt aufnehmen