具有管理历史的Angular 6+自定义后退导航

时间:2018-05-31 04:48:15

标签: angular

我对浏览器的历史有以下问题。

我在我的应用程序中点按了按钮,然后是我 this._router.navigate([...这是错误的,因为我在历史记录页面中以及我导航过的页面。然后当用户点击本机后退按钮时,他在错误的页面上结束。

我将其更改为

this.location.replaceState('xxx');
this.router.navigate(['/xxx'], { skipLocationChange  : true });

这只是技巧的一半,因为当我在应用程序中使用后退按钮时,我导航到页面,当我使用本机后退按钮时没有任何反应,因为我有两次。

我知道如何从历史中删除一个州?

1 个答案:

答案 0 :(得分:15)

您应该导入Location

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

然后在构造函数中:

constructor(        
        private _location: Location
    ) { }

在您希望返回的代码中,您可以执行以下操作:

this._location.back();

或者,如果您想跳过一些历史记录,您可以这样做:

window.history.go(-2);

这个会做两次,就像你按了两次按钮一样。