Carlos Cifuentes
Referencia AngularJS → Angular

$timeout / $apply / $digest en Angular moderno

No hay ciclo de digest. Actualizar un signal le dice a Angular qué cambió, venga de donde venga la actualización.

Antes · AngularJS
$timeout(function () { vm.saved = false; }, 2000);

socket.on('message', function (msg) {
  $scope.$apply(function () { vm.messages.push(msg); });
});
Después · Angular
setTimeout(() => this.saved.set(false), 2000);

socket.on('message', msg => {
  this.messages.update(list => [...list, msg]);
});

Qué cambia

  • $timeout y $interval pasan a ser setTimeout, setInterval o timer de RxJS.
  • $scope.$apply no hace falta: las actualizaciones de signals funcionan desde cualquier callback.
  • El error '$digest already in progress' desaparece junto con el ciclo de digest.

Consejo de migración. En una app híbrida, los cambios hechos por código Angular pueden tener que llegar a watchers de AngularJS. Deja ese puente en un solo servicio compartido, no repartido por los componentes.

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