toObservable works with a similar mechanism to effect() where changes to the signal are emitted to the subscriber of the observable. In the example below, since Angular’s change detection system stabilizes signal values, there’s only one number logged, which is 3.
// ...
injector = inject(Injector);
// ...
someFnCalledSomewhere() {
const numbers = signal(0);
numbers.set(1);
const numbers$ = toObservable(numbers, {
injector: this.injector,
});
numbers.set(2);
numbers$.subscribe((n) => console.log(n));
numbers.set(3);
}