属性'toPromise'在types'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); } } 

我得到这个错误:

“Observable”types的属性“toPromise”不存在

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

 import 'rxjs/add/operator/toPromise'; 

这是你想要使用的每个rxjs操作符都需要的。

尝试从'@ angular / http'添加'Response'到你的import语句中,如下所示:

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

另外我注意到你不要从angular度核心导入Ingectable,尽pipe你使用@Injectable装饰器。

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

在开始时使用此导入

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=48593

对我来说,这里标出的正确答案不起作用,我被封锁了。 所以,我通过另一个链接 ,这表明它可能是Visual Studio的问题。 我尝试了他们在答案中提出的选项,但也没有奏效。

所以,我继续安装Visual Studio代码。 事情开始对我很好,我被畅通无阻。 张贴这个被封锁的人(就像我一样)。

我知道这不是一个解决scheme,但只是一个解决方法,以帮助解锁人。

希望这可以帮助。