如何以角度限制最终用户对URL的更改

时间:2019-10-25 11:59:32

标签: angular

我在应用程序中使用了angular 7。 我想限制用户手动更改URL。 怎么做让我知道。 请也找到以下情况。

案例:我已使用以下代码重定向用户。因此URL不会改变,但组件将呈现为DOM。

this.router.navigate([(this.route.snapshot.data as any).redirectTo],
      {
        skipLocationChange: true, relativeTo: this.route
      });

因此原始路由将为localhost:4200 / dashboard / admin,但由于上述代码行/ admin将不会显示。 如果用户在URL末尾手动输入/ admin或/ user,那么我想删除/ admin或/ user。 怎么做

1 个答案:

答案 0 :(得分:0)

对于您的问题,没有现成的解决方案。

我的建议是使用具有以下流程的警卫:

  1. 当您从代码中导航时,沿路线发送一些内容(在服务中设置值或其他内容)
  2. 在用户/管理员路径上添加一个Guard。在警戒中,如果未设置该值,则返回false,从而使用户无法切换路由。下次重置该值。

对于1,我避免这样做:

this.router.navigate([(this.route.snapshot.data as any).redirectTo],   {     skipLocationChange:true,relativeTo:this.route,isManual:false   });

isManual将能够写在URL中,所以它是无关紧要的。我会选择共享数据服务或状态服务。在线上有关如何构建两者的大量材料。

希望这会有所帮助, 塔诺斯