Na documentação do RxJS Interop para Angular 19 diz:
Diferentemente de Observables, os sinais nunca fornecem uma notificação sÃncrona de alterações. Mesmo se você atualizar o valor de um sinal várias vezes, toObservable emitirá o valor somente após o sinal estabilizar.
E dá este exemplo:
const obs$ = toObservable(mySignal);
obs$.subscribe(value => console.log(value));
mySignal.set(1);
mySignal.set(2);
mySignal.set(3);
No caso acima, apenas 3
fica registrado.
Então, como "estabilizamos" meu sinal depois, se quisermos que cada set
chamada seja emitida pelo observável correspondente?
É suficiente sempre encapsular o conjunto em uma chamada de método como essa? Há outras maneiras de fazer isso?
updateMySignal(value: number) {
this.mySignal.set(value);
}
toObservable
éeffect
baseado.A partir da v19,
effect
execute como parteApplicationRef.tick
do efeito raiz e antes do componente ser verificado pelo CD para "Exibir efeitos".Então o observável será emitido durante o CD.
Se você precisar que um evento seja emitido, use um observável diretamente e não sinais.