Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
Activar la detección de cambios manualmente en Angular

Estoy escribiendo un componente Angular que tiene una propiedad Mode(): string .

Me gustaría poder establecer esta propiedad mediante programación, no en respuesta a ningún evento.

El problema es que, en ausencia de un evento del navegador, un enlace de plantilla {{Mode}} no se actualiza.

¿Hay alguna manera de activar esta detección de cambios manualmente?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Prueba uno de estos:

  • ApplicationRef.tick() - similar a $rootScope.$digest() de AngularJS, es decir, verifique el árbol de componentes completo
  • NgZone.run(callback) - similar a $rootScope.$apply(callback) -- es decir, evalúa la función de devolución de llamada dentro de la zona Angular. Creo, pero no estoy seguro, que esto termina comprobando el árbol de componentes completo después de ejecutar la función de devolución de llamada.
  • ChangeDetectorRef.detectChanges() - similar a $scope.$digest() -- es decir, verifica solo este componente y sus hijos

Puede inyectar ApplicationRef , NgZone o ChangeDetectorRef en su componente.

over 4 years ago · Santiago Trujillo Denunciar

0

Usé la referencia de respuesta aceptada y me gustaría poner un ejemplo, ya que la documentación de Angular 2 es muy difícil de leer, espero que esto sea más fácil:

  1. Importar NgZone :

     import { Component, NgZone } from '@angular/core';
  2. Agrégalo a tu constructor de clase.

     constructor(public zone: NgZone, ...args){}
  3. Ejecute el código con zone.run :

     this.zone.run(() => this.donations = donations)
over 4 years ago · Santiago Trujillo Denunciar

0

Pude actualizarlo con markForCheck()

Importar ChangeDetectorRef

 import { ChangeDetectorRef } from '@angular/core';

Inyectar e instanciarlo

 constructor(private ref: ChangeDetectorRef) { }

Finalmente marque la detección de cambios para que tenga lugar

 this.ref.markForCheck();

Aquí hay un ejemplo donde markForCheck() funciona y detectChanges() no.

https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview

EDITAR: Este ejemplo ya no representa el problema :( Creo que podría estar ejecutando una versión Angular más nueva donde está arreglado.

(Presione STOP/RUN para ejecutarlo nuevamente)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda