$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 · AngularsetTimeout(() => 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
- ng-transclude
- $httpProvider.interceptors
- form validation (ng-required, $error)
- $stateChangeStart / transition hooks
¿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