如何使用@ angular / http返回字符串而不是Observable

时间:2017-11-22 06:12:03

标签: angular observable

我正在使用.net核心WEB API挂钩Angular 4.

Web API根据传入的ID返回字符串中的CustomerName。

这是Angular 4中的服务方法。 我知道angular / http必须返回一个Observable,因为它是一个异步调用。

但是如何返回字符串? 或者如何从调用方法访问Observable对象中的数据?

    getCustomerName(id: number): Observable<any>{
return this._http.get(this.baseUrl + 'api/getCustomerName/' + id )
    .map((response: Response) => <any>response.json() )
    .catch(this.handleError);

}

2 个答案:

答案 0 :(得分:1)

要从observable访问数据,在您的服务中返回您从api获得的响应,如下所示:

getCustomerName(id: number): Observable<any>{
     return this._http.get(this.baseUrl + 'api/getCustomerName/' + id );
   }

并在您的组件中调用服务方法:

getCustomerName(id).subscribe(
   data => {
   console.log(JSON.parse(data));
},
error => {
   console.log(error);
});

答案 1 :(得分:0)

将此函数与map运算符一起使用:

private extractData(res) {
    let body = res.json();  // If response is a JSON use json()
    if (body) {
        return body.data || body;
    } else {
        return {};
    }
}

并在服务使用地图中这样:

return this.http.post(url, body, options)
        .map(this.extractData)

如果它不是json,那么只需省略解析线