Правильный способ использования нескольких router.parseUrl () в canActivate? - PullRequest
0 голосов
/ 31 мая 2019

У меня проблемы с охранником маршрута.Он не перенаправляет на страницу, которую я ожидаю, в зависимости от ее статуса после проверки правильности ссылочного ключа.Я сделал console.log(), чтобы отследить, что не так, видя журнал, кажется, что он зацикливается навсегда.

ПРИМЕЧАНИЕ. У всех маршрутов есть этот Route Guard.

Я попытался удалить всесостояние, но столкнулся с той же проблемой.Я предполагаю, что это потому, что на всех маршрутах есть этот охранник.Хотя мне это действительно нужно.Как я это сделаю?

canActivate(route: ActivatedRouteSnapshot,
              state: RouterStateSnapshot): boolean | UrlTree | Observable<boolean | UrlTree> | Promise<boolean | UrlTree> {

    const ls = new SecureLS();
    let referenceKey = '*';
    try {
      referenceKey = ls.get('referenceKey').trim();
    } catch (error) {
      referenceKey = '*';
    }

    return this.referenceKeyService.verifyReferenceKey(referenceKey).pipe(
      map( res => {
        if (res.message === 'success') {
          const currentURL = window.location.pathname;
          if (res.data.status === 'Validated') {
            console.log('1: ' + currentURL);
            return currentURL === '/applicant/info' ? true : this.router.parseUrl('/applicant/info') ;
          } else if (res.data.status === 'In Progress') {
            console.log('2: ' + currentURL);
            return currentURL === '/exam/take' ? true : this.router.parseUrl('/exam/take');
          } else {
            return true;
          }
        } else {
          console.log('3');
          return this.router.parseUrl('/');
        }
      })
    );
  }

Сценарий 1: пользователь переходит на applicant/info, но статус уже «В процессе», поэтому ожидается, что пользователь будет перенаправлен на exam/take

Однако то, что происходит, это не так.Глядя на журнал, кажется, что это бесконечный цикл, показывающий только 2: /applicant/info, означающий, что он переходит к условию 2, но просто цикл, а не перенаправление.

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