【问题标题】:error in return value of canActivated guardcanActivated 保护的返回值错误
【发布时间】:2018-10-19 20:50:59
【问题描述】:

我写下面的代码作为我的主页守卫,使用checkTokenValidation() 来验证来自用户的身份验证令牌,但我的 IDE 显示此错误:声明类型既不是“void”也不是“any”的函数必须返回一个值。 我返回我的订阅布尔值,但我不知道为什么我有这个问题。我测试了我的代码并了解我的代码不会将我的返回行执行为真或假,这很奇怪。

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

  }

【问题讨论】:

  • 您在订阅中返回,但不在canActivate 中。这是一个常见的菜鸟错误。

标签: angular


【解决方案1】:

通过订阅,您将返回 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;
       }
     })
   );
}

【讨论】:

    猜你喜欢
    • 2017-10-01
    • 1970-01-01
    • 2020-06-05
    • 2015-06-19
    • 2020-03-12
    • 2017-11-24
    • 2019-02-03
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多