Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

652
Views
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 answers
Answer question

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 Report

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 Report

0

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

over 4 years ago · Santiago Trujillo Report

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 Report

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 Report

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!