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

545
Views
El cuadro de diálogo de confirmación onbeforeunload no se muestra cuando se usa angular2 @HostListener

Usando el enlace @HostListener, pero el cuadro de diálogo de confirmación (que pregunta: ¿Desea abandonar esta página? ... o ¿Desea volver a cargar esta página?) no se muestra.

El código funciona, pero no se muestra el cuadro de diálogo de confirmación.

Aquí lo que tengo:

 @HostListener('window:beforeunload', ['$event']) public doSomething($event) { console.log("do I see this?") // <---- this logs to the console. return "something else"; }

Pero no veo esto:

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

devolver false en lugar de la cadena "something else" soluciona el problema y se muestra el cuadro de diálogo de confirmación.

Es muy posible que los enlaces angulares modifiquen el valor de retorno.

about 4 years ago · Santiago Trujillo Report

0

Para cualquiera que todavía esté buscando otra forma de manejar esto en Angular. Puedes intentar hacer esto:

 <router-outlet (window:beforeunload)="doBeforeUnload()" (window:unload)="doUnload()"></router-outlet>

Aquí agregué los eventos a una salida de enrutador de eventos porque es lo único en mi app.component.html, pero puede agregarlo a un contenedor o envoltorio. También se agregaron ambos eventos porque uno antes de la beforeunload solo mostrará la alerta al usuario cuando devuelva falso y luego la unload maneja el evento de cierre real. Esto es importante porque es posible que desee saber qué hacer cuando el usuario continúa o decide cerrar o gestionar los clics no deseados. Las funciones reales se ven así:

 doBeforeUnload() { // Alert the user window is closing return false; } doUnload() { // Clear session or do something this.auth.getLogout(); }

PD: Probé esto en Angular 6.

about 4 years ago · Santiago Trujillo Report

0

En lugar de devolver false , debe devolver $event.returnValue = "your text"

Los navegadores modernos no muestran el texto ingresado.

 @HostListener('window:beforeunload', ['$event']) yourfunction($event) { return $event.returnValue='Your changes will not be saved'; }
about 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!