Estoy creando un proyecto usando angular. En mi proyecto, necesito manejar el botón Atrás del navegador. El requisito es que cuando el usuario haga clic en el botón Atrás, debe cerrar la sesión
La URL de inicio de sesión es diferente y el tablero es diferente.
A continuación se muestra la implementación.
// aplicación.componente.ts
@HostListener('window:popstate', ['$event']) onBrowserBackBtnClose(event: Event) { history.pushState('back', null, null); // log out url }Pero el código anterior no funciona cuando el usuario acaba de aterrizar en el tablero
Nota: solo cuando el usuario está realizando alguna actividad, si el usuario no está realizando ninguna actividad, el evento no se activa [chrome]
No soy fanático de usar window:popstate porque parece que no debería usarse en Angular. Un mejor método para escuchar eventos popstate es suscribirse al servicio de ubicación:
import {Location} from "@angular/common"; constructor(private location: Location) { } ngOnInit() { this.location.subscribe(event => { //do something }); }una gran ventaja: puedes darte de baja cuando quieras.
Tenga en cuenta que, al igual que con window:popstate , no detectará directamente si retrocedió o retrocedió. Solo se dispara cuando ha detectado que los parámetros de la ruta han cambiado, lo que TAMBIÉN sucede cuando el usuario presiona el botón adelante.