我用下面的代码作为我的主页面防护,使用checkTokenValidation()
来验证来自用户的身份验证令牌,但是我的IDE显示此错误:声明类型既不是'void'也不是'any'的函数必须返回一个值。
我返回了我的订阅布尔值,但我不知道为什么会有这个问题。我测试了我的代码,并了解我的代码没有执行返回行是true还是false,这很奇怪。
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
this.authService.checkTokenValidation().subscribe((data) => {
console.log(data);
if (data['ok']) {
this.router.navigate(['/overview']);
return false;
} else {
return true;
}
});
}
答案 0 :(得分:0)
通过订阅,您将返回Subscription
而不是Observable
。
您应该映射到所需的值并返回Observable
:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authService.checkTokenValidation().pipe(
map( (data) => {
if (data['ok']) {
this.router.navigate(['/overview']);
return false;
} else {
return true;
}
})
);
}