角度位置服务:如何确定“后退”和“前进”导航是否可用

时间:2019-03-05 07:27:14

标签: angular angular-router

在我的PWA中,我为应用程序处于独立模式时实现了后退和前进导航按钮。 为此,我将Location service注入组件,然后:

Sum

我现在要做的是在没有可用的前向导航时禁用前进按钮,并且在没有可用的向后导航时(例如,刚刚启动的应用程序)禁用后退按钮。任何想法如何实现这一目标?位置API似乎无法满足此要求。

1 个答案:

答案 0 :(得分:2)

是的,从API文档看来确实很清楚。

您可以自己一个计数器来简单地跟随它:

private history_depth = 0;

public onForward() {
  this.history_depth -= 1;
  this.location.forward();
}

public onBack() {
  this.history_depth += 1;
  this.location.back();
}

public isBackEnabled() {
  return this.history_depth > 0;
}

修改

但是,这并不完美:通过浏览器手动返回无法正常工作。这在this SO post中进行了解释(tldr;由于安全问题,因此不可能),建议将“后退”按钮保持启用状态-如果没有后退历史记录,则为无操作。

此外,也许the history API可以解决一些问题。这不是完美的,但是也许有一些案例可以成功解决。您可以在上述SO帖子的各种答案中看到示例。