2017-08-15 4 views
0

Je suis en train de rediriger l'utilisateur vers une URL particulière sur le clic de bouton de retour dans le navigateur, et est ici le codeévénement bouton Précédent ne semble pas le feu angulaire

constructor(private router: Router,private location: PlatformLocation) {   
     let eventUrl = window.sessionStorage.getItem('Event'); 
     this.location.onPopState(() => { 
      alert('click'); 
      this.router.navigate(['/', this.selectedLanguage, 'event', eventUrl]); 
     }); 
    } 

mais il n'a pas à tirer la événement lorsque l'utilisateur clique sur le bouton de retour. Le code est dans le composant en cours. quelle est la solution?

EDIT

J'ai essayé avec la ci-dessous réponse suggérée, mais cela ne semble pas trop travailler, la fonction s'appelle, mais il redirige toujours à la page précédente plutôt que l'URL mentionné ci-dessous

unload(event: any) { 
     let eventUrl = window.sessionStorage.getItem('buyerEvent'); 
     this.router.navigateByUrl('/' + this.selectedLanguage + '/event/' + eventUrl); 
    } 
+0

Pourquoi le code du bouton de retour est-il à l'intérieur du constructeur? –

+0

Ceci est le bouton de retour du navigateur – Sajeetharan

+0

désolé mon mauvais j'étais sur le téléphone ne l'a pas lu correctement –

Répondre

2

Vous pouvez lier les choses que vous voulez faire en laissant l'application à l'événement window.unload. Ici, j'ai utilisé le HostListener.

@HostListener('window: unload', ['$event']) 
unload(event) { 
    window.open('https://localhost:4200', '_blank'); 
    window.close(); 
} 

Mentionner que Chrome bloque window.open par défaut, vous devez modifier la politique de bloc.

+0

@Sajeetharan Je viens de confirmer à mon application locale et ça fonctionne bien. BTW, je teste en localisant le code ci-dessus à 'AppComponent', mais cela ne devrait pas importer je pense. – Pengyy

+0

la fonction est appelée, mais elle ne redirige pas vers une autre URL. il retourne à la fenêtre à bandes qui était la précédente dans ce cas – Sajeetharan

+0

@Sajeetharan 'window.open' ouvrira l'URL différente dans un nouvel onglet, et' window.close' fermera l'onglet actuel. Ceci est pour votre exigence spécifique. – Pengyy

-1

Je suis utilisation Lieu

Import { Location } from '@angular/common'; 

déclare le constructeur

constructor(private _location: Location){} 

et faire fonction

backClicked() { 
    this._location.back(); 
} 

mis ensuite dans le bouton

<button (click)="backClicked()"> TEAM FALL BACK</button> 

montre alors la magie se ...

+0

est celui du navigateur – Sajeetharan

+0

this.checkRouter.navigateByUrl ('/'); alors essayez navigateByUrl à votre code –

+0

Désolé je ne l'ai pas lu correctement –