【问题标题】:Angular: Routing between pages using conditionAngular:使用条件在页面之间路由
【发布时间】:2020-07-03 00:23:24
【问题描述】:

我正在尝试使用 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。有没有办法让所有人都这样做?

【问题讨论】:

    标签: html angular typescript routing


    【解决方案1】:

    您可以阅读和检查 Guards。阅读 CanActivate 方法,也许它会对你有所帮助?

    【讨论】:

      【解决方案2】:

      RouteGuards 可能会根据您的要求更好地处理重定向。

      但一个快速的解决方法是在 URL 上执行 split() 并比较 chat 部分。试试下面的

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

      【讨论】:

      • 不客气。如果您接受答案,那就太好了。
      【解决方案3】:

      正如其他人所说,最好的解决方案是使用 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']);
          }
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 2019-05-09
        • 2019-06-24
        • 2016-11-21
        相关资源
        最近更新 更多