2016-10-27 6 views
0

잘 작동하는 Http 호출에 observables를 사용하고 있지만 컨트롤러를 변경하고 코드가 오류를 처리하지 않는 것으로 나타났습니다. 여기 각도 2 : Observable에서 http.get 오류를 처리하지 않음

내 서비스 (SellingMenuService)에서 코드를 살펴입니다 :

public getVarieties(): Observable<any> { 
    return this.http.get(this.varietyListUrl).map(response => { 
     return response.json(); 
    }, (error: any) => { 
     console.log(error); 
     console.log('error finding variety list'); 
     // TODO: implement error handling here. 
    }); 
} 

을 그리고 여기 내 구성 요소에서 관련 코드입니다 : 여기

constructor(public sellingMenuService: SellingMenuService) { } 

getVarietyList(): void {   
    this.sellingMenuService.getVarieties().subscribe(res => {    
     console.log(res); 
     this.varieties = res; 
    });   
} 

그리고 나의 콘솔에서 몇 가지 오류입니다 : enter image description here

500 오류가 발생하면 위 서비스 목록의 콘솔 로그에 히트가 표시되지 않아야합니까? 왜 안 그래?

+0

[여기 공식 추천 방법 (https://angular.io/docs/ts/latest/를 guide/server-communication.html #! # 오류 처리) _Angular.io_에서 HTTP 요청에 대한 예외를 처리합니다. 페이지 하단의 [Plunker]에 [라이브 예제] (https://embed.plnkr.co/?show=preview)에 대한 링크가 있습니다 ('/ app/toh/hero.service.ts'로 이동). HTTP 클라이언트 서비스 코드 참조). –

답변

1

map()에 오류 처리 논리가있는 것 같습니다.

import 'rxjs/add/operator/catch'; 

return this.http.request(request) 
    .map(res => res.json()) 
    .subscribe(
    data => console.log(data), 
    err => console.log(err), 
    () => console.log('yay') 
); 

참조 : How to catch exception correctly from http.request()?

1

당신이 subscribe 내부를해야 할 때 당신은의 map 방법에 오류를 잡기 위해 노력하고 있습니다.

public getVarieties(): Observable<any> { 
    return this.http.get(this.varietyListUrl).map(response => { 
     return response.json(); 
    }).subscribe((res: any) => { 
     console.log(res); 
    }, (error: any) => { 
     console.log(error); 
     console.log('error finding variety list'); 
     // TODO: implement error handling here. 
    }); 
} 

관찰 가능 항목에 세 번째 매개 변수를 추가 할 수도 있습니다. 관찰이 finalized 때 해결 될 것입니다 :

public getVarieties(): Observable<any> { 
    return this.http.get(this.varietyListUrl).map(response => { 
     return response.json(); 
    }).subscribe((res: any) => { 
     console.log(res); 
    }, (error: any) => { 
     console.log(error); 
     console.log('error finding variety list'); 
     // TODO: implement error handling here. 
    },() => { 
     console.log("finalized") 
    }); 
} 

당신은 여기에서 자세한 내용을보실 수 있습니다 : http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html

+1

코드를 시도하고 다음 빌드 오류가 발생했습니다. '구독'유형을 '관찰 가능 '에 할당 할 수 없습니다. – Brett

+0

plunkr에서 재현 할 수 있습니까? –

관련 문제