Когда запрос к серверу выполняется с помощью httpclient, он также предоставляет способ работы с наблюдаемыми реактивными расширениями (rx).Эти наблюдаемые содержат метод catch, в котором вы можете обработать ошибку.
Я использовал его, чтобы перехватить ошибки с сервера и показать информацию об ошибках на экране.Может быть, вы можете написать логику для отображения изображения по умолчанию или что-то подобное, вот код.
import { Component, ViewChild, Input, OnInit, Injectable, Injector } from '@angular/core';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { URLSearchParams, QueryEncoder,Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Rx';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/catch';
import {ICustomer } from '../components/table/Customer'
import { NotificationsService } from './notification.service';
import { IClientmessage } from './clientmessage';
import { DatabaseServiceIsbusy } from './databaseserviceIsbusy.service';
@Injectable()
export class CustomerserviceService {
constructor(private http: HttpClient,private httpold: Http, private notificationService: NotificationsService, private databaseservice: DatabaseServiceIsbusy) {
}
private baseUrlTask = 'http://localhost:4584/customer'
private httpOptions = {
headers: new HttpHeaders({
'Access-Control-Allow-Origin':'*',
'Content-Type': 'application/json',
})
};
public addCustomer(customer: ICustomer):Observable<IClientmessage>{
return this.http.post<IClientmessage>(this.baseUrlTask, customer,this.httpOptions).catch(error =>this.handleError(error));;
}
private handleError(error: HttpErrorResponse): Observable<any> {
console.error(error.error);
let errormessage:IClientmessage= error.error
this.notificationService.notify(errormessage.severity, errormessage.summary,errormessage.detail);
this.databaseservice.displayLoader(false);
return Observable.throw(error.error || 'Server error');
}