Angular 后退按钮事件不触发
我试图通过点击浏览器中的后退按钮将用户重定向到一个特定的url,下面是代码Angular 后退按钮事件不触发,angular,typescript,back-button,angular-route-segment,Angular,Typescript,Back Button,Angular Route Segment,我试图通过点击浏览器中的后退按钮将用户重定向到一个特定的url,下面是代码 constructor(private router: Router,private location: PlatformLocation) { let eventUrl = window.sessionStorage.getItem('Event'); this.location.onPopState(() => { alert('click
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]);
});
}
但当用户单击后退按钮时,它似乎不会触发事件。代码位于当前组件中。问题是什么
编辑
我尝试了以下建议的答案,但这似乎也不起作用,函数被调用,但它仍然重定向到上一页,而不是下面提到的url
unload(event: any) {
let eventUrl = window.sessionStorage.getItem('buyerEvent');
this.router.navigateByUrl('/' + this.selectedLanguage + '/event/' + eventUrl);
}
我正在使用位置
Import { Location } from '@angular/common';
在构造函数上声明
constructor(private _location: Location){}
然后做一个函数
backClicked() {
this._location.back();
}
然后将其设置为按钮
<button (click)="backClicked()"> TEAM FALL BACK</button>
然后观看神奇的发生…您可以在将应用程序保留到window.unload事件时绑定您想要做的事情。这里我使用了HostListener
提到Chrome将阻止window.open默认情况下,你必须更改阻止策略。为什么后退按钮的代码在构造函数中?这是浏览器的后退按钮我的错我在电话上没有正确读取它控制台中的错误只有当你在单击后退按钮后离开应用程序时才会触发此事件。按钮是浏览器的按钮。检查路由器。navigateByUrl'/';所以试着导航到你的code@Sajeetharan我刚刚在我的本地应用程序上确认,它工作正常。顺便说一句,我通过在AppComponent中定位上述代码进行测试,但我认为这并不重要。函数正在被调用,但它不会重定向到其他url。它返回到条纹窗口,这是本教程中的前一个窗口case@Sajeetharanwindow.open将在新选项卡中打开不同的url,window.close将关闭当前选项卡。这是为了满足您的特定要求。@Sajeetharan还请确保您正在“新”选项卡中打开url,因为某些原因,当您尝试在“当前”选项卡中打开url时,它将无法工作。
@HostListener('window: unload', ['$event'])
unload(event) {
window.open('https://localhost:4200', '_blank');
window.close();
}