typescript 在使用find()获取数据时,出现此错误Property 'find' not exist on type 'HttpEvent< any>'.

t40tm48m  于 2023-03-31  发布在  TypeScript
关注(0)|答案(2)|浏览(296)

类型“HttpEvent”上不存在属性“find”。

logIn(signInForm: FormGroup) {
    console.log('Login', signInForm);
    this._http.get<any>('http://localhost:3000/signUpData', this.signInForm.value).subscribe(result => {
      if (this.id === undefined) { return }
      this._toast.success(this.signUpData, 'Registered Successfully!');
      const userData = result.find((loginData: any) => {
        return loginData.email === this.signInForm.email && loginData.password === this.signInForm.password
      });
      if (this.signUpData) {
        alert('Login Successfully!')
        this.router.navigate(['dashboard']);
      } else {
        alert('User not found!')
      }
    })

  }
yhived7q

yhived7q1#

错误消息指示find()方法未被识别为类型HttpEvent<any>上的有效方法。这是因为HttpEvent<any>是表示来自服务器的HTTP响应的泛型类型,并且没有find()方法。
要解决此问题,您需要指定您期望从服务器获得的响应对象的类型。在本例中,您似乎期望的是loginData对象的数组。因此,您可以将响应对象的类型从HttpEvent<any>更改为loginData[],如下所示:

this._http.get<loginData[]>('http://localhost:3000/signUpData', this.signInForm.value).subscribe(result => {
83qze16e

83qze16e2#

看起来你试图发送一个带有请求体的GET请求。这是Angular不支持的,请参阅Angular HttpClient Get method with body。如果你可以改变后端实现,只需切换到POST方法。
虽然规范允许这样的请求,但这不是一个好的做法,这就是为什么一些工具(如Angular)不支持这一点。请参阅:HTTP GET with request body .

相关问题