Angular rxjs interop
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/angular-rxjs-interop
Bridging Observables and Signals using toSignal and toObservable. Use when converting between RxJS Observables and Angular Signals. (triggers: toSignal, toObservable, takeUntilDestroyed, rxjs angular)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill angular-rxjs-interopAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
2.0 KB, 423 tokens by cl100k_base, as published. Nobody here has run it
RxJS Interop
Priority: P1 (HIGH)
Principles
- Async to Sync: Use toSignal(observable$, { initialValue: defaultValue }) from @angular/core/rxjs-interop to convert Observables (HTTP, Events) to Signals for template rendering. Call in an injection context (class field or constructor). toSignal auto-unsubscribes on component destroy. Provide initialValue to avoid
undefined. - Sync to Async: Use toObservable(this.query) when you need RxJS operators (debounceTime, switchMap, distinctUntilChanged) on a Signal. Then wrap back with toSignal() if rendering.
- Auto-Unsubscribe:
toSignalautomatically unsubscribes. - Cleanup: Use takeUntilDestroyed() for manual subscriptions in injection contexts. For use outside, inject(DestroyRef) and call
takeUntilDestroyed(destroyRef).
Guidelines
- HTTP Requests:
- GET:
http.get<User[]>(...).pipe(catchError(() => of([])))->toSignal(..., { initialValue: [] }). Use in templates as {{ users() }}. - Consider httpResource() for simpler reactive HTTP in newer versions.
- POST/PUT: Trigger explicit subscribe() or lastValueFrom().
- GET:
- Race Conditions: Handle async loading states.
toSignalrequires aninitialValueor handlesundefined.
Anti-Patterns
- No manual subscribe in templates: Use
toSignal()for Observables rendered in templates. - No BehaviorSubject for state: Replace with
signal()+toObservable()for RxJS interop. - No global takeUntil: Use
takeUntilDestroyed()scoped to the injection context. Never use a global Subject with takeUntil — it leaks if Subject is never completed.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.