角度:使用条件在页面之间路由

时间:2020-03-22 10:40:45

标签: html angular typescript routing

我正在尝试使用Angular中的基本if条件在页面之间进行路由。

  GoToHome() {
    if(this.router.url=='/chat'){
      console.log(this.router.url)
      this.router.navigate(['login']);
    } else {
      this.router.navigate(['people']);
    }
  }

问题是路由聊天不是真的正确,聊天中有很多页面(chat \ x,chat \ y等),我希望它对聊天中的所有页面都有效,但是现在它不起作用。如果我写了诸如chat \ x之类的特定路由,它确实起作用,但仅适用于x。有办法做到全部吗?

3 个答案:

答案 0 :(得分:0)

您可以阅读并检查Guards。了解有关CanActivate方法的信息,也许会对您有所帮助?

答案 1 :(得分:0)

RouteGuard可以根据您的要求更好地处理重定向。

但是一种快速的解决方法是在URL上进行split()并比较chat部分。尝试以下

if(((this.router.url).split('/')[1]) === 'chat') {
  // proceed
}

答案 2 :(得分:0)

正如其他人所说,最好的解决方案是使用Angular Guard https://medium.com/@ryanchenkie_40935/angular-authentication-using-route-guards-bf7a4ca13ae3

无论如何要解决问题,都可以使用 startsWith()函数,该函数确定字符串是否以指定字符串的字符开头。

GoToHome() {
    if((this.router.url).startsWith('/chat'){
      console.log(this.router.url)
      this.router.navigate(['login']);
    } else {
      this.router.navigate(['people']);
    }
  }