2017-01-24 12 views
1

私は、角度とNPMに新しいんだけど、学習するとき、私は私がしようとしているソースで動作しているようですコードで、エラーが発生しました再現(here)。TS「観察可能<Response>」

私はこれが私の開発環境に関係していると仮定しますが、私は正確に理由を理解することはできません。

これは私のコードです:.map

return this.http.get('api/cards.json') 
.map((response:Response) => <Card[]>response.json().data) 
.do(data=>console.log(data)) 
.catch(this.handleError); 

、Visual Studioのコードは、私は、このエラーを与える:

ts Property 'map' does not exist on type 'Observable'

私はこのエラーを無視して、ブラウザに行けば、私はしました同じメッセージ。

私はangular-cliで自分のプロジェクトを作成しました、そして私の角度のバージョンは、実際には2.4.4です。サーバーはng serveツールで実行されています。私が作った

が検索サムス:

property map does not exist on observable response in angular - >私は、Visual Studio 2015を使用していないし、また、私は(私のVisual Studioのコードを最新の状態によもバグがベンが解決したようですちょっと前から)。

Angular 2 2.0.0-rc.1 Property 'map' does not exist on type 'Observable<Response>' not the same as issue report - >私のコマンドラインを約tscと私はnpm i typescript -gを行って(とVS codeng serve

間違って何が起こっているすべてのアイデア(私は何かが起動していないと仮定し、両方を再起動した後は何も知りません。現在まで、私はそれを更新するために何をして方法がわからない)。

+0

。角形サイトのチュートリアルでは、Observable をどのように消費するか、またRxJsのlibで 'map'のように使いたい一般的なメソッドへの参照マッピングを作成する方法について説明しています。 – Igor

+0

@Igor:あなたは正しいと思います。 rxjs/Observableから 'import {Observable} 'を追加するだけで、私のサービスに問題が解決されないので、' RxJs'をインストールするために何か特別なことをしなければなりませんか? – J4N

+0

以下の私の答えを見てください。 「演算子」とみなし、ロードするためにはインポートの依存関係を宣言する必要があります。これはかなり一般的な演算子であり(他のものと同様に)、共通のインポートファイルを作成してインポートする方が簡単です。これはAngularのヘルプ/ドキュメンテーションからかなり得られたものです。 – Igor

答えて

3

あなたはObservableとしてあなたのモジュール/コンポーネント/サービス(それはあなたがここにを書いているされているもの)でRxJsライブラリを参照する必要があります(タイプはhttp.getから返されます)その図書館の一部。 RxJsは、あなたがmapのように使用することができます多くのオペレータ、catchdo、などがありますが、これらを使用するために、あなたは彼らが中に含まれているファイル/モジュールを参照する必要があります。

角度サイト上のチュートリアルが良い説明を持っていますObservable<T>の消費方法と、RxJsのlibのマップのように使いたい一般的な方法への参照マッピングの作成方法について説明します。 RxJsライブラリのより一般的に使用される演算子と型への参照を含む単一のファイルを作成することによって、参照ファイルを参照するだけで、これらの型を使用して、すべての演算子/型をすべて追加する必要がなくなりますプロジェクト全体で、それらを活用したい場所にファイルを作成します。ここで

は、より一般的に使用される方法のいくつかと(この例ではrxjs-operators.tsという名前の)ファイルの例です。あなたが.map(またはその他の方法)を使用して、この行を追加したいファイルの先頭へ

// Observable class extensions 
import 'rxjs/add/observable/of'; 
import 'rxjs/add/observable/throw'; 

// Observable operators 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/debounceTime'; 
import 'rxjs/add/operator/distinctUntilChanged'; 
import 'rxjs/add/operator/do'; 
import 'rxjs/add/operator/filter'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/switchMap'; 

。 `Observable`(http.get`から返されるタイプは、そのライブラリの一部であるとして、あなたはあなたのモジュール/コンポーネント/サービスにおける` RxJs`ライブラリを(それはあなたがここに書いているが何であれ)を参照する必要が

import './rxjs-operators'; 
+1

ありがとう、私が従っていたレッスンもそれを解読していました。デモを見せた後、私はあまりにも、私が推測することができなかったことを知りました。 – J4N

関連する問題