Angular: маршрутизация между страницами с использованием условия - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь выполнить маршрутизацию между страницами с использованием базового условия c if в Angular.

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

Проблема в том, что чат о маршруте не совсем правильный, существует много страниц в чате (chat \ x, chat \ y и многих других) Я хочу, чтобы он работал для всех страниц в чате, но сейчас он не работает. Если я напишу указанный c маршрут, такой как chat \ x, он будет работать, но только для x. Есть ли способ сделать это для всех?

Ответы [ 3 ]

0 голосов
/ 22 марта 2020

RouteGuards может лучше справиться с обработкой перенаправлений в соответствии с вашими требованиями.

Но быстрым обходным путем было бы сделать split() в URL и сравнить для части chat. Попробуйте следующее

if(((this.router.url).split('/')[1]) === 'chat') {
  // proceed
}
0 голосов
/ 22 марта 2020

Как уже сказал другой, лучшее решение - это использовать Angular Guard https://medium.com/@ryanchenkie_40935 / angular -authentication-using-route-guards-bf7a4ca13ae3 .

В любом случае разрешить В вашей проблеме вы можете использовать функцию startWith () , которая определяет, начинается ли строка с символов указанной строки.

GoToHome() {
    if((this.router.url).startsWith('/chat'){
      console.log(this.router.url)
      this.router.navigate(['login']);
    } else {
      this.router.navigate(['people']);
    }
  }
0 голосов
/ 22 марта 2020

Вы можете прочитать и проверить охранников. Читайте о методе CanActivate, может, он вам поможет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...