У меня проблемы с охранником маршрута.Он не перенаправляет на страницу, которую я ожидаю, в зависимости от ее статуса после проверки правильности ссылочного ключа.Я сделал 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, но просто цикл, а не перенаправление.