Response.json()メソッドが頻繁に使用されていることを確認し、自分で使用していますが、何かが足りないか、Responseクラスのドキュメントが間違っています。
例:
getCurrentTime() {
return this._http.get('http://date.jsontest.com/')
.map((res:Response) => res.json())
}
Angularサイト https://angular.io/docs/ts/latest/api/http/index/Response-class.html 、私は ' tメソッドをResponseクラスのメンバーとして見る。
.jsonがnotResponseクラスのメンバーである場合、誰かがこれがどのように機能するかを理解する方向に私を向けることができます。
または、ドキュメントが間違っている場合は、誰かがそう言ってください。
前もって感謝します。
応答のAPIリファレンス を見ると、Response
がBody
を拡張していることがわかります。 Body
を検索しようとしても、それは見つかりません。これは、おそらく公開されていないことを意味します。 Bodyのソースコード を見ると、json
のコードが表示されます。
/**
* Attempts to return body as parsed `JSON` object, or raises an exception.
*/
json(): any {
if (typeof this._body === 'string') {
return JSON.parse(<string>this._body);
}
if (this._body instanceof ArrayBuffer) {
return JSON.parse(this.text());
}
return this._body;
}
ソースの説明が必要な場合はお知らせください。それは私にはかなり自明に見えます。
実際には、HTTPクライアントのドキュメント( 応答オブジェクトの処理 )には次のように書かれています。
JSONに解析
これはAngular独自の設計ではありません。 Angular HTTPクライアントは、Fetch関数によって返される応答オブジェクトのFetch仕様に従います。この仕様は、応答本文をJavaScriptオブジェクトに解析する
json()
メソッドを定義します。
したがって、Angular2は Fetch Specification を実装します。これには、前述の Body
mixin の仕様が含まれます。Angular2のResponse
クラスは、.json()
メソッド。
json()
メソッドは、呼び出されたときに、JSONを使用して消費本体を実行した結果を返す必要があります。
Peeskilletのリンクを見るとわかるように、Angular2はformData()
を除くBody mixinのすべての指定されたメソッドを実装しています。
私は同じ問題を抱えていましたが、これはエラーが消える方法です:Angular 4+の新しいバージョンでは、rxjsをインポートする必要があります:
import { map } from 'rxjs/operators';
次からインポートする代わりに:
import 'rxjs/add/operator/map';
次に、.get()を.get()に変更します。また、以下のようにangular 4+にパイプを使用する必要があります。
getCurrentTime() {
return this._http.get<any>('http://date.jsontest.com/')
.pipe(map((res:Response) => res.json()));
}
お役に立てば幸い...!