После https://angular.io/api/core/ErrorHandler Я могу переопределить глобальный обработчик ошибок, чтобы что-то делать с объектом ошибки, и мне нравится, как я могу просто объявить свой собственный глобальный обработчик ошибок и импортировать его в любое место, где мне это нужно.
Но в RxJS я использую catchError(this.handleError(my, params, go, here))
много.
Я бы хотел глобализировать свой метод handleError()
и включить его в мой глобальный обработчик ошибок.Но это не выглядит технически возможным.
Это то, что делает мой метод handleError
, который в сочетании с catchError
в RxJS обрабатывает ошибку, (1) записывая ее в логгер (2) записывая ее на консоль и (3) возвращаяфиктивная Observable
, чтобы вызов RxJS мог выполняться гладко.
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
constructor(private messageService: MessageService) { }
public handleError<T>(
error: HttpErrorResponse, operation = 'operation', result?: T) {
var errorMessage = '';
if (error.error instanceof ProgressEvent) {
errorMessage = `Client error occurred: ${error.message}`;
} else {
errorMessage = `Adam's error ${error.status}: ${error.message}`;
}
console.error(errorMessage);
this.messageService.add(`${operation} failed: ${errorMessage}`);
return of(result as T);
}
}
Как я могу сделать это как глобальный обработчик ошибок?Или я должен использовать другой подход?Я знаю, что могу создать «службу ошибок» для хранения моего общего handleError()
и внедрить его везде, как и любой другой сервис, но это кажется неуклюжим.