Angular 9-路由-堆栈历史记录(清除)

时间:2020-05-23 15:36:06

标签: angular routes history angular9

是否可以使用角度9路由如下所述管理方案?

共有三页(A,B和C)。用户输入页面A(这是注册页面),然后插入注册数据,然后在第二页(B)中输入必须插入确认码的位置。我希望用户可以从此页面前进(C页)并清除历史记录(使用back功能无法访问a和b页),但是他可以返回A页。这可能吗?

A-> B-> C [在C中,A e B不再可用] A-> B-> A [在B时,我可以在A中返回]

谢谢。

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。下面提到其中两个:

  • 您将使用本机浏览器location.history API手动操作历史记录。
  • 使用包含rxjs/subject数据的isRoute创建服务。在下一页(在B之后)对其进行实例化。检查数据并执行路线。

我个人比较喜欢第二个。为此:

1)用您的首选名称生成服务。

2)在服务中,创建一个主题,该主题将存储我们的路线数据(isAllowed)(最初设置为true)。

3)在页面B中,将其作为构造函数中的私有类变量以及用于路由的路由器进行访问。

constructor(private service: ServiceName, private router: Router) {}

4)通过订阅isAllowed isAllowed,检查值subject是否为真。如果没有,请路由到首选组件。

this.service.isAllowed.subscribe({isAllowed} => {
  isAllowed ? this.router.navigate("component path here") : false
})