首页 文章

canActivated guard的返回值出错

提问于
浏览
0

我写下面的代码作为我的主要页面保护,使用 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;
      }
    });

  }

1 回答

  • 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;
           }
         })
       );
    }
    

相关问题