我是angular和npm的新手,但是在学习的时候,我遇到了一个错误,代码看起来像我正在尝试重现的源(这里).
我认为这与我的开发环境有关,但我不能完全理解为什么.
这是我的代码:
return this.http.get('api/cards.json') .map((response:Response) =>response.json().data) .do(data=>console.log(data)) .catch(this.handleError);
在.map
,Visual Studio代码给我这个错误:
ts'Observable'类型中不存在属性'map'
如果我忽略此错误并转到浏览器,我会收到相同的消息.
我用the创建了我的项目angular-cli
,而我的角度版本实际上是2.4.4.服务器正在使用该ng serve
工具运行.
我做了一些搜索:
属性映射不存在于角度的可观察响应 - >我不使用visual studio 2015,而且,我最近使用我的Visual Studio代码(似乎这个bug已经解决了一段时间).
角2 2.0.0 RC.1住宅"地图"不上键入"可观测<响应>"不一样的问题的报告存在 - >我的命令行不知道什么tsc
,我已经做了之后npm i typescript -g
(和重启了两个VS code
和ng serve
知道出了什么问题(我想有些东西不是最新的,但我不知道是什么以及如何更新它).
您必须RxJs
在模块/组件/服务中引用库(无论您在此处写什么),因为Observable
(从中返回的类型http.get
)是该库的一部分.在RxJs
有很多运营商,您可以使用像map
,catch
,do
,等,但为了使用这些,你必须引用的文件/文件它们包含在模块中.
角度站点上的教程很好地解释了如何使用它Observable
以及如何创建引用映射到更常用的方法,如RxJs
lib中的map .通过创建一个单独的文件,引用RxJs
库中更常用的运算符和类型,您只需要引用那个您想要使用这些类型的引用文件,这样就不必重新添加每个文件中的所有运算符/类型在您希望利用它们的项目中.
这是一个示例文件(rxjs-operators.ts
以此示例命名),其中包含一些常用的方法.
// Observable class extensions import 'rxjs/add/observable/of'; import 'rxjs/add/observable/throw'; // Observable operators import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/map'; import 'rxjs/add/operator/switchMap';
要在文件顶部使用.map
(或任何其他方法)添加此行.
import './rxjs-operators';