router.navigate не работает в Angular или входит в бесконечный цикл - PullRequest
1 голос
/ 17 апреля 2019

Я использую Angular 6. У меня есть служба с именем UserService, которая вызывает функцию с именем getUser().

В функции, которую я хочу перейти на страницу входа, когда у пользователя есть недействительный токен.

getUser(){
 this.user = JSON.parse(sessionStorage.getItem('currentUser'));
 if (!this.user) {
   this.router.navigate(['login']);
   this.toastr.error('Unknown Logged In User');
   return false;
 }
 this.token = this.user.token;
 return this.user;
}

Я вызываю getUser во многих компонентах.например, в ActiveOrdersComponent

getCurrentUser() {
    let loggedUser = this.userService.getUser();
    if (loggedUser) {
        this.info = {
            currentUser: {
                currentUserName: loggedUser.first_name + ' ' + loggedUser.last_name
            }
        }
    }
    return this.info.currentUser;
}

Я использую LazyLoader.

Мой исходный путь - '/auth/orders/active'

Путь входа в систему назначения '/login'

функция getUser() не перемещается и не входит в бесконечный цикл.и браузер зависает с несколькими ошибками консоли.

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

1 Ответ

0 голосов
/ 17 апреля 2019

У меня была эта проблема до и через несколько часов я мог найти проблему.Когда вы сталкиваетесь с этой проблемой, происходят 2 вещи:

  1. , когда вы хотите перенаправить пользователя на другую страницу и использовать метод навигации, вы должны указать адрес следующим образом:

            this.router.navigate(['/login']
    
  2. иногда вы пишете этот код в своем собственном компоненте.например, вы пишете код выше в компоненте входа в систему.это приводит к тому, что при обновлении страницы вы сталкиваетесь с бесконечным циклом.просто вы должны изменить адрес в методе навигации, чтобы убрать эту проблему.

Я надеюсь, что это поможет вам

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