2017-07-15 115 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

當然,不客氣 –