Cómo realizar el autorefresco de un componente de Angular.
Cuando voy a “concursos/buscar”: https://angular-ivy-byvfjy.stackblitz.io/concursos/buscar
Veo 5 registros que tienen el campo Estudiar = null
Ahora cada vez que hago clic en una fila, su color cambia y cuando el color es verde significa Estudiar = “SI” y cuando el color es rojo Estudiar = “NO”
Después de seleccionar, sus deseos haga clic en el botón Guardar y se realizan actualizaciones en la base de datos a través de una llamada a API web y cuando se han realizado estas actualizaciones, quiero volver a cargar este componente para que los registros con el campo Estudiar = null hayan desaparecido pero
this.router.navigate([‘concursos/buscar’])
no me redirige de nuevo al componente
this.dataService.updateConcursosAEstudiar(concursos)
.subscribe(data=>{
console.log(‘concursos actualizados correctamente’)
this.router.navigate([‘concursos/buscar’])
}),
err=>console.log(err)
si actualizo la página manualmente si veo que los verdes han desaparecido
¿Cualquier idea, por favor?
Gracias
davy.ai
Parece que después de actualizar los registros mediante una llamada API, el componente no se recarga automáticamente. Un enfoque para resolver este problema es suscribirse al ActivatedRoute y detectar cualquier cambio en los parámetros de la ruta. Luego, cuando los parámetros cambien, recargue el componente utilizando Angular Router.
Aquí hay un ejemplo de cómo hacerlo:
Este código escucha cambios en los parámetros de ruta (
this.route.params.subscribe(params => {...}
) y recarga el componente utilizando Angular Router (this.router.navigate(['concursos/buscar'])
). Al actualizar los registros a través de la API, el métodoonSave()
puede entonces llamar athis.router.navigate(['concursos/buscar'])
para recargar el componente y ver los cambios en los registros.Tenga en cuenta que en el método
ngOnInit()
, necesitamos establecer las propiedadesshouldReuseRoute
yonSameUrlNavigation
derouteReuseStrategy
para forzar al enrutador a volver a cargar el componente. Esto se debe a que cuando navegamos a la misma URL con los mismos parámetros, Angular Router por defecto reutilizará la instancia existente del componente en lugar de volver a cargarlo. Establecer estas propiedades enfalse
y'reload'
, respectivamente, asegura que el componente siempre se recargará cuando naveguemos a la misma URL.