toObservableSignal
toObservableSignal() combines the functionality of Angular Signal and RxJS Observable.
This function uses toObservable() from @angular/core/rxjs-interop under the hood, so it should be called in an injection context, or the injector should be passed as the second argument (options).
import { toObservableSignal } from 'ngxtension/to-observable-signal';Usage
@Component({ selector: 'my-app', standalone: true, imports: [CommonModule], template: ` <h2>Signal A: {{ a() }}</h2> <h2>Observable A: {{ a | async }}</h2> <h2>Observable B (A*2): {{ b | async }}</h2> <h2>Signal C (A*3): {{ c() }}</h2> `,})export class App { a = toObservableSignal(signal<number>(0)); b = this.a.pipe( switchMap((v) => { return of(v * 2); }), ); c = computed(() => this.a() * 3);
constructor() { setInterval(() => this.a.set(1), 10000); setInterval(() => this.a.update((v) => v + 1), 1000); }}toObservableSignal() accepts a Signal or WritableSignal as the first argument.
The second argument is optional - it is a ToObservableOptions object, which is the exact type used by toObservable(). Here, you can set the injector.