我在选路员方面遇到麻烦。验证引用键是否有效后,它不会根据其状态重定向到我期望的页面。我做了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,但只是循环而不是重定向。