Estoy trabajando en un proyecto Angular. Estoy luchando con la acción de actualización en un componente.
Me gustaría actualizar los componentes del enrutador al hacer clic en el botón. Tengo el botón de actualización cuando hago clic en él, el componente / enrutador debe actualizarse.
Lo intenté window.location.reload()
y location.reload()
estos dos no son adecuados para mi necesidad. Por favor, ayude si alguien lo sabe.
angular
routes
components
refresh
Sreehari Ballampalli
fuente
fuente
Respuestas:
Después de investigar un poco y modificar mi código como se muestra a continuación, el script funcionó para mí. Acabo de agregar la condición:
fuente
"your actualComponent"
con una variable. La variable se establece se establece enthis.location.path()
antes de la llamada anavigateByUrl
. De esa manera, no es necesario pasar ningún parámetro del componente de llamada o duplicar / pasar rutas.'/'
where/RefrshComponent
is, y para[Your actualComponent"]
usted simplemente pasará la URL (y / o los parámetros) que le gustaría recargar, comothis.router.navigate(["/items"])
. Este truco esencialmente redirige a la URL superior y luego muy rápidamente a la URL deseada, que es imperceptible para la mayoría de los usuarios y parece ser el truco más elegante para lograr esto de manera simple.'/'
como mi ruta ficticia, va (víaredirectTo
) a donde mi app-routing.module.ts redirige a una ruta de''
(cadena vacía) y se detiene, sin continuar hasta la ruta de finalización en lanavigate()
llamada. Si utilizo una cadena inexistente (por ejemplo/foo
) como mi ruta ficticia, va (víaredirectTo
) a donde mi app-routing.module.ts redirecciona para**
(todo lo demás) y nuevamente se detiene, sin ir a la ruta real. Curiosamente, la barra de URL SI cambia a la ruta real. ¿Alguna idea sobre qué es diferente aquí?Utilice this.ngOnInit (); para recargar el mismo componente en lugar de recargar toda la página !!
fuente
Agregar esto al código del constructor del componente requerido funcionó para mí.
Asegúrese de hacerlo
unsubscribe
desde mySubscription enngOnDestroy()
.Consulte este hilo para obtener más detalles: https://github.com/angular/angular/issues/13831
fuente
Afortunadamente, si está utilizando Angular 5.1+, ya no necesita implementar un truco ya que se ha agregado soporte nativo. Solo necesita configurar onSameUrlNavigation para 'recargar' en las opciones de RouterModule:
Puede encontrar más información aquí: https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2
fuente
router.onSameUrlNavigation = 'reload'
propiedad del enrutador inyectado.onSameUrlNavigation
está destinado a volver a invocar a los guardias / resolutores y no a recargar componentes ya enrutados. Consulte github.com/angular/angular/issues/21115 para obtener más información al respecto. Esta solución funcionará para aplicaciones más grandes y complejas que utilicen Guardias / Resolvedores, pero fallará para ejemplos simples.esto está un poco fuera de la caja y no sé si esto te ayuda o no, pero ya lo has intentado
this.ngOnInit();
es una función, por lo que cualquier código que tenga se recordará como una actualización.
fuente
solo haz esto: (para angular 9)
fuente
Esto se puede lograr mediante un truco, navegue a algún componente de muestra y luego navegue hasta el componente que desea recargar.
fuente
En mi aplicación, tengo un componente y todos los datos provienen de la API a la que llamo en el constructor del componente. Hay un botón mediante el cual estoy actualizando los datos de mi página. al hacer clic en el botón, tengo guardar datos en el back-end y actualizar datos Entonces, recargar / actualizar el componente, según mi requisito, es solo actualizar los datos. si este también es su requisito, utilice el mismo código escrito en el constructor del componente.
fuente
Una forma más sin ruta explícita:
async reload(url: string): Promise<boolean> { await this.router.navigateByUrl('.', { skipLocationChange: true }); return this.router.navigateByUrl(url); }
fuente
kdo
fuente
fuente
archivo html
archivo ts
fuente
Otra forma de actualizar (de manera difícil) una página en angular 2 como esta se ve como f5
fuente