Angular 角度2:http.get对字符串的响应 核心问题:

Angular 角度2:http.get对字符串的响应 核心问题:,angular,rxjs,angular2-observables,Angular,Rxjs,Angular2 Observables,我想把下面的响应转换成一个字符串,而不是一个可观察的字符串 getFacebookPhoto(uid: string): Observable<any> { let results = this.http.get('https://graph.facebook.com/' + uid + '/picture?height=200&redirect=false') .map(response => response.json().data.url.)

我想把下面的响应转换成一个字符串,而不是一个可观察的字符串

getFacebookPhoto(uid: string): Observable<any> {
    let results = this.http.get('https://graph.facebook.com/' + uid + '/picture?height=200&redirect=false')
    .map(response => response.json().data.url.)
    return results
}

但是,有没有一种方法可以在不创建订阅的情况下执行此操作?获取发射并处理可观测数据的东西可能…

不,您正在订阅事件,数据在到达应用程序之前不存在

Http模块正在发出一个异步web请求来获取数据,因此您需要订阅以在数据存在时获得通知(并采取一些操作,例如将数据分配给变量)


订阅是必需的。

在angular2的Http中,来自“@angular/Http”。 http.get将始终返回一个可观察对象,您可以在函数的签名中看到它:

get(url: string, options?: RequestOptionsArgs): Observable<Response>;
我建议你读一读观察到的或承诺


此外,您不需要在此处使用{{}:
(单击)=“{{selectedPic=gravatarUrl}”

谢谢大家的回复。我知道我必须订阅observable。我想问的是,对observable进行操作的最佳方式是什么,以将目标发射变成字符串。此外,模板语句中的花括号是一个错误。这就是为什么我包含了第二个代码块,您可以看到如何使用它使用您定义的函数。您的函数签名是
getFacebookPhoto(uid:string):Observable
要使用它,您可以在需要的地方订阅它并传递响应。json()看看这个:为了更准确一点,有一个选项可以实现您的要求,使用ES2017功能,您可以向下滚动,看到它没有得到广泛支持。您好,感谢您的回复。请查看Omri Luzon回答的评论。
get(url: string, options?: RequestOptionsArgs): Observable<Response>;
getFacebookPhoto("abcd123").subscribe(response => {
    this.myObject = response.json();
}