Обработчик угловых ошибок

Я реализовал глобальный обработчик ошибок в моем приложении. Моя проблема с этим в настоящее время состоит в том, что он перехватывает связанные с клиентом ошибки, но он не перехватывает любую ошибку сервера для вызовов http. Вот как выглядит реализация обработчика ошибок:

import { Injectable, ErrorHandler, Injector } from '@angular/core';
import { HttpErrorResponse } from '@angular/common/http';
import { NotificationService } from '@app/services/notification.service';

@Injectable()
export class GlobalErrorHandler implements ErrorHandler {

    constructor(private _injector: Injector) { }

    handleError(error: Error | HttpErrorResponse) {        
        const notificationService: this._injector.get(NotificationService);
        if (error instanceof HttpErrorResponse) {
            // Server error happened (this DOES NOT get intercepted)
            if (!navigator.onLine) {
                // No Internet connection
                return notificationService.notify('No Internet Connection');
            }
            // Http Error (this DOES NOT get intercepted)
            return notificationService.notify(`${error.status} - ${error.message}`);
        } else {
            // Client Error Happend (this gets intercepted)
            console.error(error);
        }
        // Log the error anyway
        console.error(error);
    }    
}

Я предоставляю GlobalErrorHandler в AppModule как это:

providers: [ 
    { provide: ErrorHandler, useClass: GlobalErrorHandler}
]

Любые идеи, почему ошибка http не перехватывается обработчиком?

0 ответов

Другие вопросы по тегам