Angular 7中的类型'OperatorFunction <{},{}>'错误上不存在属性'subscribe'

时间:2019-02-12 22:29:32

标签: javascript angular

在学习如何处理Angular Typescript中的错误时抛出了错误

  

类型'OperatorFunction <{},{}>'上不存在属性'subscribe'   在我组件的此代码块中

createPost(post: HTMLInputElement) {
this.service.newPost(post).subscribe(
  response => {
    this.posts.splice(0, 0, post);
  },
  (error: AppError) => {
    if (error instanceof BadInput) {
      // Set form errors and display them next to input fields
      this.form.setErrors(error.originalError);
    } else {
      alert("An unexpected error occurred.");
      console.log(error);
    }
  }
);
}

返回组件代码使用的可观察值的服务代码是

newPost(post) {
return (
  this.http.post(this.url, post),
  catchError((error: Response) =>
    error.status === 400
      ? Observable.throw(new BadInput(error))
      : Observable.throw(new AppError(error))
  )
);
}

我需要解决该错误的帮助,并解释为什么会引发该错误或如何最好地实现处理错误。

1 个答案:

答案 0 :(得分:0)

您应该使用管道运算符,然后使用地图运算符,再使用catchError运算符。您将必须从rxjs / operators导入map运算符和catchError运算符。请看下面:

.pipe(
    mergeMap(resp => {
        // add logic
    }),
    catchError(err => {
        // add handling 
    })
);