属性 'toPromise' 在类型 'Observable<Response>' 上不存在

Property 'toPromise' does not exist on type '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);
    }
}    

我收到这个错误:

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

您需要像这样添加运算符:

import 'rxjs/add/operator/toPromise';

这是您要使用的每个 rxjs 运算符所必需的。

尝试将 'Response' 添加到来自“@angular/http”的导入语句 像这样:

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

我还注意到你没有从 angular 核心导入 Ingectable 尽管你使用了@Injectable 装饰器。

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

在开头使用这个导入

import {Observable} from "rxjs/Rx";