【问题标题】:A function whose declared type is neither 'void' nor 'any' must return a value Angular声明类型既不是“void”也不是“any”的函数必须返回一个值 Angular
【发布时间】:2020-10-09 11:14:58
【问题描述】:

之前使用可观察类工作正常时出现此错误


  login(userId: string, userPassword: string): Observable<User> {          >>> I am getting error here
        this.http.post(this.Url,'/' + {userId} + '/' + {userPassword})
            .pipe(map(user => {
                // store user details and jwt token in local storage to keep user logged in between page refreshes
                localStorage.setItem('currentUser', JSON.stringify(user));
                this.currentUserSubject.next(user);
                return user;
            }));
    }

这是界面

 export interface User {
         success:string
         userId:string
         userPassword:string
         token?: string
    }

【问题讨论】:

  • 你能粘贴确切的错误/日志吗?
  • this.http.post 之前添加一个return
  • “对象”类型的参数不可分配给“用户”类型的参数。 “对象”类型可分配给极少数其他类型。您的意思是改用“任何”类型吗? “对象”类型缺少“用户”类型的以下属性:成功、用户 ID、用户密码
  • @frunkad 它不工作
  • 在返回 user 之前,对其进行类型转换。 return (user as User)

标签: angular


【解决方案1】:

您在this.http.post 之前缺少return 并使用tap

  login(userId: string, userPassword: string): Observable<User> {     
      return this.http.post(this.Url,'/' + {userId} + '/' + {userPassword})
            .pipe(tap(user => {
                // store user details and jwt token in local storage to keep user logged in between page refreshes
                localStorage.setItem('currentUser', JSON.stringify(user));
                this.currentUserSubject.next(user);
            }));
    }

【讨论】:

    【解决方案2】:

    两个变化

    • 类型转换的用户

    • 返回的 Observable

      login(userId: string, userPassword: string): Observable<User> {  
            return this.http.post(this.Url,'/' + {userId} + '/' + {userPassword})
                .pipe(map(user => {
                    // store user details and jwt token in local storage to keep user logged in between page refreshes
                    localStorage.setItem('currentUser', JSON.stringify(user));
                    this.currentUserSubject.next(user);
                    return (user as User);
                }));
        }
      

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2018-03-18
      • 2018-03-09
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 2018-03-15
      • 1970-01-01
      相关资源
      最近更新 更多