2016-09-27 9 views
0

모든 API 호출에 대해 일반 빌드 요청 메소드를 생성했습니다. 응답은 괜찮 았으나이 메소드 외부로 전달되지 않았습니다.일반 빌드 요청 메소드 응답이 정의되지 않았습니다.

내 api.ts 클래스 내가 지금처럼 모든 통화를 정의한 같은 클래스에서 (조각)

buildRequest(url, method, body?) { 
    let options = new RequestOptions({ 
     url: this.apiUrl + url, 
     method: method, 
     body: body 
    }); 
    let req = new Request(options); 
    return this.http.request(req) 
     .map(res => { 
      res.json(); 
     }) 
     .catch(this.handleError); 
} 

handleError(error: any) { 
    return Observable.throw(error.message); 
} 

: 구성 요소에서 다음

getItem() { 
    return this.buildRequest('url', RequestMethod.Get) 
} 

내가

this.api.getItem().subscribe(res => { 
    this.item = res; 
    } 
}) 

다른 모든 곳에서 .map 안에있는 은 정의되지 않은입니다. 나는 일반

반환 this.http.get (...)

하고 여기에 표시 같은 논리를 사용하는 경우, 그것은 괜찮 았는데. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 'rxjs/관찰 가능한'에서 {관찰 가능한}

수입;

나는이 두 가지를 수입하고

수입 'rxjs은/수신'당신의 buildRequest 방법에서

답변

1

당신은 작은 실수를했다.

return this.http.request(req) 
    .map(res => { 
     return res.json(); 
    }) 
    .catch(this.handleError); 
: 그래서 .map 호출 코드는 다음과 같이한다

x => x.Field // <-- this is a shorthand 

x => { return x.Field; } 

과 같다 : 중괄호와 람다 표현식을 사용하는 경우, 당신이 뭔가를 반환해야

관련 문제