2017-07-15 63 views
2

我无法理解人们应该如何从Angular Response对象获取响应主体。在他们的文档他们有规定角度获得响应主体

http.request('my-friends.txt').subscribe(response => this.friends = response.text());

但当我试图做let body: string = response.text();我得到一个错误说“参数类型的‘无极’是不能分配给类型‘字符串’的参数”的例子。

我试图把它当作一个承诺,做

let body: string; response.text().then(text => body = text);

从而消除编译错误,但是当这种代码被调用,它抛出和错误说“类型错误:response.text(...)那么这不是一个功能“。

我想了解Promise是什么以及我需要如何检索它的属性。

+0

更新后全码 – Aravind

回答

1

我相信你在你的导入中引用了错误的Response对象。如果你指定的类型需要从角包导入Response对象:

import { Response } from '@angular/http`; 

还有一个从获取由浏览器原生支持的API Response对象。它们的不同之处在于,对于Response.text()方法,角度Response对象返回string,而提取API Response返回承诺。 http服务使用Angular的Response对象,它返回一个字符串,因此您不需要这里的承诺。

如果你想保存正文到body变量,你必须这样做,当你从一个观察的值:

http.request('my-friends.txt').subscribe((response: Response) => this.body = response.text()); 
+0

是啊,是这样的话。我不知道有另一个回应。感谢您的澄清。 – seMikel

+0

当然,不客气 –