来自 HttpClient Post 请求的错误管道类型

Wrong piped type got from HttpClient Post request

我的服务正在触发这样的 post 请求

createDocument(owner: string): Observable<HttpResponse<Document>> {
    return this.http.post<HttpResponse<Document>>(`${this.API}`, {owner}).pipe(
      tap(document => {
        this.dataStore.unshift(document.body!.authenticationMethod, document.body!.assertionMethod)
        this.list$.next(this.dataStore)
      })
    )
  }

但是 tap 函数中的响应没有 HttpResponse 类型,而是 Document.

我原以为 document 是一个 HttpResponse<Document> 对象。我的 API 以类似 Document json 的字符串进行响应,该字符串被正确解析为 Document 对象。

Angular HttpClient 方法支持名为 observe.

的选项

默认为 body。在您的情况下,您应该指定类型 'response':

return this.http.post<Document>(`${this.API}`, {owner}, { observe: 'response' })

注意:我还将类型更改为 Document,这样 TypeScript 会自动将 document 参数识别为 HttpResponse<Document>