My service is firing post request like this
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)
})
)
}
However the response in the tap function doesn't have a HttpResponse type instead it is a Document.
I was expecting document to be a HttpResponse<Document> object. My APIs is responding with a Document json-like string that is correctly parsed into a Document object.
CodePudding user response:
Angular HttpClient methods support an option called observe.
By default it's body. In your case you should specify type 'response':
return this.http.post<Document>(`${this.API}`, {owner}, { observe: 'response' })
Note: I also change type to just Document so that TypeScript will automatically recognize document parameter as HttpResponse<Document>
