API
add(data) {
return this.httpClient.post<any>('/api/v3/templates', data);
}
Observable
this.templateService.add(obj)
.subscribe(
(response) => {
console.log(reposne)
},
(error) => {
console.log(error)
}
);
My Post API gives back a error with some Message in response as Name Already Exists But i am not able to get that in error Object which is printed to console
The object which is printed is
{
error:null
headers:HttpHeaders {normalizedNames: Map(0), lazyUpdate: null,
lazyInit: ƒ}
message:"Http failure response for http://localhost/api/v3/templates:
400 Bad Request"
name:"HttpErrorResponse"
ok:false
status:400
statusText:"Bad Request"
url:"http://localhost/api/v3/templates"
}
how can I get the message that I am getting in response as my error object doesn't have that response body.
In Observable there are three options.
there are others too like map, debounce etc.
I think you your case the error might not coming in http standard and might be coming in subscribe.
So check if the customized message is coming in next rather as an error.
The error returned is normally an instance of HttpErrorResponse, with an
error
property containing the wrapped error (client or server)https://angular.io/guide/http#getting-error-details
So normally you should be able to handle the error like this.
If the
error
property is null this could be because the server does not return anything. Did you check using postman or some other tool that your server returns the appropriate response?You can use a typed response:
On your
error
notification type you could have something like:before, in your class:
and then, your
ErrorResponse
can be like:and class
HttpHeaders
then you can map some other variables, as
message
(this.message
)