2016-06-29 5 views
64
import { Headers, Http } from '@angular/http'; 

@Injectable() 
export class PublisherService{ 

    private publishersUrl = 'app/publisher'; 

    constructor(private http: Http) { } 

    getPublishers(): Promise<Publisher[]>{ 
     return this.http.get(this.publishersUrl) 
        .toPromise() 
        .then(response => response.json().data) 
        .catch(this.handleError); 
    } 
}  

存在しません:あなたはこのように演算子を追加する必要がプロパティ 'toPromise' '観察可能<Response>' タイプで、私はこのエラーになっています

Property 'toPromise' does not exist on type 'Observable'.any

+2

経由typescriptですのバージョンを更新することでこの問題を解決することができます。 Observablesはもっと強力です – Dinistro

答えて

152

を:

import 'rxjs/add/operator/toPromise'; 

これは、使用するすべてのrxjs演算子に必要です。このような 「角度/ HTTP @」からあなたのimport文への応答」を追加

10

試してみてください。

import {Http, Headers, Response} from '@angular/http'; 

はまた、私はあなたが@Injectableデコレータを使用していますが、あなたが角度コア からIngectableをインポートしない気づきました。

import { Injectable } from '@angular/core'; 
+0

私はsystemjs.config.jsも更新し、このページの提案に従っています。今はその罰金。 – MiHawk

+0

こんにちはMiHawk、あなたはsystemjs.config.jsで何を更新しましたか?https://angular.io/docs/ts/latest/tutorial/toh-pt6.htmlに続き、ここにこだわってしまった – khoailang

+0

答えは、この問題を修正した内容は記載されていません –

7

初め私にとって

import {Observable} from "rxjs/Rx";

+2

本当に悪い考えですが、これは本当に大きなRXJSライブラリをインポートし、ページの読み込み時間を大幅に増やします。 – danday74

+0

私はそうではないと思います。 "@ angular/core"のimport {component}を使用します。多くの場所が正しいので、これもまた悪いはずですか? –

+3

'{Observable} from' rxjs/Observable 'をインポートします。あなたが望むものです...これはちょうどObservableをインポートします。rxjs/Rxを実行すると、RxJSをすべてインポートし、Observableのみを使用します。本当に遅くなります。 rxjs/RXへの参照をすべて削除し、ネット要求の大幅な削減とページ読み込み速度の高速化を見てください。 – danday74

-2

で、このインポートを使用し、ここに記さ正解は動作しませんでしたし、私がブロックされました。 したがって、別のlinkを調べたところ、Visual Studioで問題が発生している可能性があります。私は彼らが答えで示唆したオプションを試しましたが、それもうまくいきませんでした。

私はVisual Studio Codeをインストールしました。物事は私のためにうまく働き始め、私はブロックされていませんでした。私がそうだったのと同じように、ブロックされている人のためにこれを投稿してください。

私はそれが解決策ではなく、人々のブロックを解除するための回避策であることを知っています。

これが役に立ちます。これにつまずく他の誰のために

関連する問題