Angular2将导航限制为使用应用

时间:2017-09-18 13:03:29

标签: javascript angular2-routing

我想要实现的目标在这里非常基础。在Angular2应用程序中,我有以下流程:

  1. 用户转到我的应用
  2. 该应用会显示输入视图/whatever),其中包含输入和所有
  3. 用户点击保存按钮
  4. 该应用会显示摘要视图/summary
  5. 我需要的摘要视图只能通过按输入视图上的按钮来访问 >。这意味着:

    • 用户在摘要视图上重定向并重新加载页面
    • 在尝试通过在浏览器中键入/summary网址直接访问摘要视图时,用户会被重定向
    • 从另一个非输入视图
    • 的页面访问摘要视图时,用户会被重定向

    我尝试的是是使用canActivate摘要视图实施safeGuard。问题是,我无法找到获取上一个网址的方法!

    canActivate(route: ActivatedRouteSnapshot,
                state: RouterStateSnapshot): boolean {
         // return previous_url == '/whatever'
         // how to find previous_url ???
    }
    

    任何有关如何获得前一个网址或其他方式来实现这一目标的帮助都是受欢迎的。

1 个答案:

答案 0 :(得分:0)

您好,您可以像这样检查摘要组件中的条件。

previousUrlSnapshot:字符串;

constructor(router: Router) {
  router.events
  .filter(event => event instanceof NavigationEnd)
  .subscribe(e => {
    console.log('prev:', this.previousUrlSnapshot);
    this.previousUrlSnapshot = e.url;
    if(this.previousUrlSnapshot.includes('inputViewRoute')) // your Input Route
    {
       this.router.navigateByUrl("inputViewRoute");
    }
  });
}