Angular 2:“Observable<Response>”类型上不存在属性“toPromise”

Posted

技术标签:

【中文标题】Angular 2:“Observable<Response>”类型上不存在属性“toPromise”【英文标题】:Angular 2: Property 'toPromise' does not exist on type 'Observable<Response>' 【发布时间】:2016-12-01 02:59:03 【问题描述】:

我正在开发 Angular 2 项目并关注 Http Client Guide 以实现 HTTP 请求但在使用 RsJxmodule 时收到以下错误。

“可观察”类型上不存在属性“toPromise”

我已完成以下操作,但错误仍然存​​在:

添加import 'rxjs/add/operator/toPromise';到服务模块 检查RxJs 库的版本是否存在任何依赖关系。 从RxJs library导入了所有模块

你可以在 Github 上找到我的源代码here。请指导我应该做什么以及我缺少什么。谢谢。

您可以在 rxjs-operators.ts 文件中找到所有导入,我在 app.component.ts 文件中引用了它以使其成为全局但我仍然是dragon.service.ts 文件有错误。 此外,.map() 也会显示相同的错误

您可以在 package.json 文件中找到所有版本详细信息。

其他细节是:

节点版本:v4.4.7 npm 版本:v3.10.5 角度版本:2.0.0-rc.4 RxJs 版本:5.0.0-beta.6

注意: 目前我已经对代码进行了注释,但您可以随意修改。

【问题讨论】:

【参考方案1】:

请查看: Angular 2 2.0.0-rc.1 Property 'map' does not exist on type 'Observable<Response>' not the same as issue report

“对于 VS 2015(更新 3):

安装 VS 2015 Update 3 将 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TypeScript\typescriptServices.js 替换为 https://raw.githubusercontent.com/Microsoft/TypeScript/Fix8518-U3/lib/typescriptServices.js 中的文件。不过,请先进行本地备份。”

此解决方法为我解决了“Property 'toPromise' 不存在”问题。

【讨论】:

将实施并让您知道。谢谢【参考方案2】:

我认为这是 Visual Studio 中的一个错误(我猜你在 VS2015 中看到了这种行为?)当我尝试在 VS2015 中使用 Angular2 应用程序时,我遇到了这个问题。

作为一种变通方法,您可以尝试使用 Visual Studio Code 来处理您的项目。我使用 VS Code 打开了您引用的存储库,并验证了它具有预期的 rxjs 扩展(如 toPromise)的智能感知。但是,正如您所说,在 VS2015 中未找到 rxjs 扩展并显示为错误。

【讨论】:

是的,我正在使用 VS2015。我已经在 rxjs 平台上报告了这个错误。我将在 VS 社区上进一步报告这一点。谢谢

以上是关于Angular 2:“Observable<Response>”类型上不存在属性“toPromise”的主要内容,如果未能解决你的问题,请参考以下文章

如何将空 JSON 数据推送到 Observable<any[]> angular 2 类型的数组字段

在 Angular 2 中对 observable 进行单元测试

Angular 将 Observable<any> 实现为同步字符串 [] 数组

Angular 6 router.events.filter 'filter' 不存在于类型'Observable<Event>'

尝试订阅在 Angular 中返回 Observable 的方法

两个使用相同 Observable 的 angular2 服务