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

658
Vistas
location.reload(true) está en desuso

Sé que no es ideal recargar una aplicación de página única angular. Sin embargo, hay un lugar donde necesito volver a cargar la aplicación completa.

TSLint dice que la recarga está obsoleta.

¿Hay alguna alternativa para esto?

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

0

Puede usar location.reload() sin el indicador forceReload. Esto está en desuso porque no está en la especificación: https://www.w3.org/TR/html50/browsers.html#dom-location-reload

over 4 years ago · Santiago Trujillo Denunciar

0

Si observa la definición de interfaz para Ubicación, verá lo siguiente:

 /** * Reloads the current page. */ reload(): void; /** @deprecated */ reload(forcedReload: boolean): void;

Usar location.reload() es la sintaxis válida. Solo la recarga con ForcedReload está en desuso.

En su caso, cambie location.reload(true) a location.reload() para resolver su problema.

over 4 years ago · Santiago Trujillo Denunciar

0

Cambiar location.reload(true) a location.reload() funciona. forceReload es el que está en desuso.

over 4 years ago · Santiago Trujillo Denunciar

0

Dado que el parámetro forceReload está en desuso, como ya mencionaron 3 personas, algunos navegadores también lo ignoran.

Usando solo location.reload(); no es una solución si desea realizar una recarga forzada (como se hace, por ejemplo, con Ctrl + F5 ) para recargar todos los recursos desde el servidor y no desde el caché del navegador.

La solución a este problema es ejecutar una solicitud POST a la ubicación actual, ya que esto siempre hace que el navegador vuelva a cargar todo.

location.reload() solo está ejecutando una solicitud GET .

Así que llegué a la solución alternativa para colocar un formulario vacío en la aplicación Angular con method="POST" y action="https://example.org/" y luego enviar ese formulario desde el código subyacente cuando lo deseaba.

Plantilla:

 <form [action]="myAppURL" method="POST" #refreshForm></form>

Código subyacente / componente:

 import { Component, OnInit, ViewChild } from '@angular/core'; @Component({ // bla bla bla Mr. Freeman }) export class FooComponent { @ViewChild('refreshForm', { static: false }) refreshForm; forceReload() { this.refreshForm.nativeElement.submit(); } }

Supongo que esto también se puede hacer de una manera menos complicada. Estoy investigando... (HttpClient, ¿tal vez?)

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que la forma mejor y más efectiva de actualizar (no solo recargar) la página es usar un formulario con method="post", una acción vacía y un botón de envío, ya que las solicitudes de "publicación" nunca se almacenan en caché. ¡Simple y efectivo, e incluso funciona sin JavaScript!

 <form action="" method="post"> <button type="Submit">Refresh</button> </form>

Si necesita hacerlo programáticamente, puede ocultar el botón con CSS y activar la acción de clic en el botón con JavaScript.

Gracias a @Martin Schneider por su idea.

over 4 years ago · Santiago Trujillo Denunciar

0

Creé un paquete pequeño para tener una solución para limpiar el caché y recargar la página si es necesario: https://www.npmjs.com/package/clear-cache

clearCache() o clearCache(false) cuando solo desea borrar el caché pero no desea volver a cargar la página.

over 4 years ago · Santiago Trujillo Denunciar

0

De acuerdo con la respuesta de Martin Schneider, puede crear una función y luego simplemente llamarla

 forceReload() { if(environment.production) { const form = document.createElement('form'); form.method = "POST"; form.action = location.href; document.body.appendChild(form); form.submit(); } else { window.location.reload(); } }

Buena suerte ! 😉

over 4 years ago · Santiago Trujillo Denunciar

0

Dado que window.location.reload(true) ha quedado en desuso. Puedes usar:

window.location.href = window.location.href ,

para forzar la recarga y borrar el caché.

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