2017-04-03 1 views
1

Angular (v2.4.3) 사용자 지정 오류 처리기를 가장 간단하게 구현했지만 여전히 오류를 기록 할 수 없습니다. 무엇이 잘못 될 수 있습니까?각도 2 오류가 사용자 지정 오류 처리기에 도착하지 않음

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

내-오류 handler.ts

import { ErrorHandler, Injectable} from '@angular/core'; 

@Injectable() 
export class MyErrorHandler extends ErrorHandler { 

    constructor(private errorHandlerService: ErrorHandlerService) { 
    super(); 
    } 

    public handleError(error: any): void { 
    console.log('error'); // nothing 
    } 
} 

샘플 service.ts이

addSomething(data) { 
    let bodyString = JSON.stringify(data); 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    let options = new RequestOptions({ headers: headers }); 

    return this.http.post(this.url + 'expense', bodyString, options) 
     .map((res: Response) => res.json()) 
     .catch(this.handleError); 
    } 

    private handleError(error: any) { 
    console.log(error.json()); // error: { message: 'Some error' } 

    return Observable.throw(error.json()); 
    } 

는 오류 throwed (오류가 발생하는 것을 시도) app.module.ts 서비스 중이라면 MyErrorHandler에 도착하지 마십시오. 무엇이 잘못 될 수 있습니까?

이 중요하지만 콘솔에서 나는 또한이 같은 것을 가지고 있다면 나도 몰라 :

POST http://path/to/api 422 // logged by zone.js 

답변

4

변화

export class MyErrorHandler implements ErrorHandler { 

여기 https://angular.io/docs/ts/latest/api/core/index/ErrorHandler-class.html

를 참조

export class MyErrorHandler extends ErrorHandler { 

에를

그리고 당신은 또한 단락 회로 오류가

return this.http.post(this.url + 'expense', bodyString, options) 
    .map((res: Response) => res.json()) 
    .catch(this.handleError);  // remove this method call 
+0

감사를 처리 .catch 방법을 제거해야합니다. 불행히도 여전히 작동하지 않습니다. –

+0

'.catch' 메서드를 사용하여 다른 핸들러를 지정했기 때문에 그렇게 생각합니다. 제거하면 사용자 지정 오류 처리기가 – coderek

+0

이라고하는 것을 볼 수 있습니다. 그렇습니다. 고맙습니다! 해결책으로 표시 할 수 있도록 답변으로 게시 할 수 있습니까? –