Carlos Cifuentes
Referencia AngularJS → Angular

$watch en Angular moderno

$watch se divide en tres herramientas: computed para valores derivados, effect para efectos secundarios, y RxJS para todo lo que implique tiempo o peticiones.

Antes · AngularJS
$scope.$watch('vm.query', function (value) {
  if (value) { vm.search(value); }
});
Después · Angular
query = signal('');

results = toSignal(
  toObservable(this.query).pipe(
    debounceTime(300),
    filter(q => q.length > 0),
    switchMap(q => this.api.search(q)),
  ),
  { initialValue: [] },
);

Qué cambia

  • Un watcher que solo recalcula un valor pasa a ser un computed.
  • Un watcher que dispara una petición pasa a ser un flujo de observables, con debounce y cancelación incluidos.
  • Los watches profundos ($watch con true, $watchCollection) pasan a ser actualizaciones inmutables: reemplaza el arreglo u objeto en vez de mutarlo.

Consejo de migración. Cuenta los watchers durante el diagnóstico. Las pantallas con muchos suelen ser las lentas, y son las que más ganan con la migración.

Relacionado

¿Planeas una migración o una plataforma de microfrontends?

En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.

Escríbeme por LinkedIn