Как получить имя компонента из службы обработчика ошибок httpInterceptor в angular?

Мне нужно получить точное имя компонента, имя функции и номер строки, где произошла ошибка в файле angular ts, но я не могу получить их из httpInterceptor. Пожалуйста, помогите мне получить вышеуказанное от httpInterceptor.

console.log(this.route.routeConfig.component.name);

Я пробовал это выше, и он дает имя компонента текущего рабочего компонента, но мне нужно получить имя компонента из httpInterceptor.

import { Injectable, ErrorHandler, Input } from '@angular/core';
import { catchError, retry} from 'rxjs/operators';
import { Observable, throwError } from 'rxjs';

@Injectable ({ providedIn: 'root' })
export class errorHandler implements HttpInterceptor{
    constructor(){
    }

    intercept(request : HttpRequest<any>, handler : HttpHandler) : Observable<HttpEvent<any>>{
        return handler.handle(request)
        .pipe(
            retry(1),
            catchError((error : any) => {
                console.log('---->'+request.headers.get('content-disposition'));
                let errorMessage = '';
                if(error.error instanceof ErrorEvent)
                    errorMessage = `Error : `+error.error.message;
                else
                    errorMessage = `Error Code : `+error.status +`\nMessage : `+error.message;

                return throwError(JSON.stringify(errorMessage));
            })
        )
    }

}```

person M.Sanjay    schedule 27.06.2019    source источник
comment
Есть ли какая-то конкретная причина для обработки ошибки в httperror, когда она может быть обработана при вызове компонента или службы?   -  person KiraAG    schedule 27.06.2019
comment
@KiraAG Лучший способ обработки ошибок HTTP в приложении — реализовать общий HTTPErrorInterceptor, поскольку он будет перехватывать каждый вызов, а ошибки можно легко обрабатывать, не обрабатывая их в каждой службе.   -  person nitin9nair    schedule 27.06.2019
comment
@KiraAG, я хочу глобально обрабатывать любую ошибку, используя HTTP INterceptor. Мне также нужно знать, какой компонент внутри приложения выдал ошибку.   -  person M.Sanjay    schedule 27.06.2019
comment
@ M.Sanjay, вы не можете знать, какой компонент выдает эту ошибку в вашем перехватчике. Потому что вы делаете XMLHttpRequest и у вас есть отслеживаемость этого стека вверх по течению   -  person Shifenis    schedule 27.06.2019
comment
@Shifenis Если есть другой способ, пожалуйста, предложите мне.   -  person M.Sanjay    schedule 27.06.2019
comment
@ M.Sanjay У меня нет идей найти решение, только вы можете использовать console.error в своем перехватчике. Вы можете прочитать ошибку в консоли, но вы узнаете о проблеме только в нисходящем потоке.   -  person Shifenis    schedule 27.06.2019
comment
Вы получили значение URL в методе intercept? Таким образом, на основе URL-адреса вы можете определить компонент, если вы использовали специфичный для компонента REST Apis.   -  person hrdkisback    schedule 27.06.2019
comment
@hrdkisback На самом деле мне нужно получить имя компонента программно.   -  person M.Sanjay    schedule 27.06.2019


Ответы (1)


console.trace();

Приведенный выше код помогает получить полную трассировку того, как произошла ошибка, а также соответствующий номер строки, имя функции и имя компонента. Таким образом, мы можем использовать console.trace() в случае отладки, что более полезно для того, чтобы узнать, где произошла ошибка.

person M.Sanjay    schedule 01.07.2019
comment
Я хочу проверить условие имени компонента, как это сделать? - person Palak Jadav; 10.01.2020