2017-07-15 15 views
2

アングルレスポンスオブジェクトからレスポンスボディを取得する方法を理解できません。そのドキュメントでは、彼らは私が「引数の型の 『約束』はタイプ 『文字列』のパラメータに割り当て可能ではありません」というエラーを取得let body: string = response.text();を行うにしようとすると、まだレスポンスボディを取得する

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

を述べている例があります。

私は約束としてそれを処理し、コンパイルエラーを取り除く

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

をやってますが、このコードが呼び出されたときに、それはスローし、エラーが「言ってみた例外TypeError:response.text(...) 。は関数ではありません "。

私はプロミスが何であるか、それをどのように取得する必要があるのか​​を理解したいと思います。

+0

更新完全なコード – Aravind

答えて

1

私はあなたのインポートで間違ったResponseオブジェクトを参照したと思います。あなたはタイプを指定している場合の角のパッケージからResponseオブジェクトをインポートする必要があります。また、ブラウザでネイティブにサポートAPIをフェッチからResponseオブジェクトはあり

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

。彼らは角度ResponseオブジェクトがResponse.text()メソッドの場合はstringを返し、フェッチAPIの場合はResponseが約束を返します。 httpサービスはAngularのResponseオブジェクトを使用し、文字列を返しますので、ここで約束は必要ありません。

あなたはbody変数に本文テキストを保存したい場合は、あなたが観測から値を取得したときにそれをしなければならない。

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

とポストうん、それはケースです。私は別の反応があることを知らなかった。説明をありがとう。 – seMikel

+0

確かに、あなたは大歓迎です –

関連する問題