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, {{Mode}}
no se actualiza un enlace de plantilla .
¿Hay alguna manera de activar esta detección de cambio manualmente?
ChangeDetectorRef.detectChanges()
. los validadores estaban disparando antes de que mi directiva pudiera actualizar el valor de una entrada.Utilicé 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 sea más fácil:
Importar
NgZone
:Agréguelo a su constructor de clase
Ejecute el código con
zone.run
:fuente
zone.run
código y qué es exactamentedonations
?Pude actualizarlo con markForCheck ()
Importar ChangeDetectorRef
Inyectar e instanciarlo
Finalmente marque la detección de cambio que tendrá lugar
Aquí hay un ejemplo donde markForCheck () funciona y detectChanges () no.
https://plnkr.co/edit/RfJwHqEVJcMU9ku9XNE7?p=preview
(Presione STOP / RUN para ejecutarlo nuevamente)
fuente
En Angular 2+, prueba el decorador @Input
Permite un buen enlace de propiedad entre los componentes primarios y secundarios.
Primero cree una variable global en el elemento primario para contener el objeto / propiedad que se pasará al elemento secundario.
A continuación, cree una variable global en el elemento secundario para contener el objeto / propiedad pasado del elemento primario.
Luego, en el html primario, donde se usa la plantilla secundaria, agregue la notación de corchetes con el nombre de la variable secundaria, luego configúrela igual al nombre de la variable primaria. Ejemplo:
Finalmente, donde la propiedad secundaria se define en el componente secundario, agregue el decorador de entrada:
Cuando se actualiza su variable principal, debe pasar las actualizaciones al componente secundario, que actualizará su html.
Además, para activar una función en el componente secundario, eche un vistazo a ngOnChanges.
fuente
ChangeDetectorRef.detectChanges () - similar a $ scope. $ Digest () - es decir, verifique solo este componente y sus elementos secundarios
fuente