Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何通过按后退按钮避免默认操作?_Angular - Fatal编程技术网

Angular 如何通过按后退按钮避免默认操作?

Angular 如何通过按后退按钮避免默认操作?,angular,Angular,如何通过按后退按钮避免默认操作 这是我的密码 @HostListener('window:popstate', ['$event']) onPopState(event) { this.open('ac'); } open(form){ if(form == 'ac'){ this.router.navigate(['/']); } ... } 按“后退”按钮将进入上一页,而不是“this.router.navigate(['/'

如何通过按后退按钮避免默认操作

这是我的密码

@HostListener('window:popstate', ['$event'])
  onPopState(event) {
    this.open('ac');
  }

  open(form){
    if(form == 'ac'){
      this.router.navigate(['/']);
    }
     ...
  }

按“后退”按钮将进入上一页,而不是“this.router.navigate(['/']);”中指定的页面。

这将阻止默认操作:

event.preventDefault()

当用户导航会话历史记录时,当活动历史记录条目更改时,将触发窗口界面的popstate事件。它将当前历史记录条目更改为用户访问的最后一页的历史记录条目,或者,如果使用history.pushState()将历史记录条目添加到历史记录堆栈中,则使用该历史记录条目。
(如本文所述:)

因此,在历史堆栈中添加一个历史条目将有助于更改“返回”目标

解决方案:
假设我当前在“/page1”中,我想在按下后退按钮时导航到“/”。检查以下代码段

ngOnInit() {
  history.pushState( {} , 'page1', '/page1' );
  history.pushState( {} , 'home', '/' );
}
希望这有帮助