我无法访问我的订阅中从observable返回的属性

时间:2018-01-05 00:35:45

标签: angular object rxjs observable

我正在从API中检索数据。 API返回具有各种属性的对象。我希望能够访问该对象的属性,但目前只能访问第一个属性。当我从服务中调用可观察对象时,我看到了对象和所有属性。但是,当我从组件中的subscribe中调用对象时,它返回一个空数组。因此,第一个属性在组件中返回,但我无法访问其他任何内容。

我也尝试从observable访问数据并返回我想要的属性,但是当我这样做时它会默默地失败。有人可以告诉我我做错了什么吗?以下是相关代码。

组件:

getPrice() {
    this.data.getData(this.API_Price)
        .subscribe(
            price => this.price = price,
            error => this.errorMessage_price = <any>error);
            console.log('component', Object.keys(this.price));

}

服务:

getData(url): Observable<any> {
    this.showLoader();
    return this.http.get(url)
        .map(this.extractData)
        .catch(this.handleError)
        .finally(() => {
            this.hideLoader();
        });
}

public extractData(res) {
    const body = res.json();
    console.log('service', body);
    return body;
}

public handleError(error: any) {
    const errMsg = (error.message) ? error.message :
        error.status ? `${error.status} - ${error.statusText}` : 'Server error';
    this.showLoader();
    console.error('Error', errMsg); // log to console instead
    return Observable.throw(errMsg);
}

// console enter image description here

1 个答案:

答案 0 :(得分:0)

也许你想在完整的处理程序中使用console.log?

getPrice() {
  this.data.getData(this.API_Price)
    .subscribe( 
        price => this.price = price,
        error => this.errorMessage_price = <any>error),
        () => console.log('component', Object.keys(this.price));
    )
}