web-dev-qa-db-ja.com

プロパティ 'toPromise'はタイプ 'Observable <Response>'に存在しません

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」はタイプ「Observable」に存在しません。

69
MiHawk

次のような演算子を追加する必要があります。

import 'rxjs/add/operator/toPromise';

これは、使用するすべてのrxjsオペレーターに必要です。

156
Dinistro

次のように、「@ angular/http」からのインポート文に「Response」を追加してみてください。

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

また、@ Injectableデコレータを使用しても、angularコアからIngectableをインポートしないことに気付きました。

import { Injectable } from '@angular/core';
10
Shai Barak

最初にこのインポートを使用します

import {Observable} from "rxjs/Rx";

これにつまずく人(それは私にとってトップのグーグルリンクでした)については、リンクされた答えの一つから来る以下を参照してください

https://github.com/Microsoft/TypeScript/issues/8518#issuecomment-229506507

それが言うように、Visual Studio 2015では、TypeScriptのバージョンを更新することでこれを修正できます

https://www.Microsoft.com/en-us/download/details.aspx?id=4859

0
tony