Observable.of不是一个函数
我在我的项目中导入Observable.of
函数有问题。 我Intellij看到的一切。 在我的代码中,我有:
import {Observable} from 'rxjs/Observable';
在我的代码中,我使用它:
return Observable.of(res);
有任何想法吗?
其实我有import搞砸了。 在最新版本的RxJS中,我们可以像这样导入它:
import 'rxjs/add/observable/of';
虽然这听起来很奇怪,但对我来说,重要的是import {Observable} from 'rxjs/Observable
'的导入pathimport {Observable} from 'rxjs/Observable
大写'O'。 如果我从rxjs/observable
导入Observable,那么带有observable_1.Observable.of is not a function
的错误信息observable_1.Observable.of is not a function
。 奇怪,但我希望它可以帮助别人。
只是补充一点,
如果你使用的很多,那么你可以导入所有使用
import 'rxjs/Rx';
正如@Thierry Templier所提到的那样。 但是我认为如果你使用有限的操作符,那么你应该导入单个操作符
import 'rxjs/add/operator/filter'; import 'rxjs/add/operator/mergeMap'; import 'rxjs/add/observable/of';
正如@uksz所提到的那样。
因为'rxjs / Rx'会导入所有的性能肯定会降低的Rx组件。
你也可以这样导入所有的操作符:
import {Observable} from 'rxjs/Rx';
由于任何原因补丁不适合我,所以我不得不采用这种方法:
import { of } from 'rxjs/observable/of' // ... return of(res)
我今天有这个问题。 我使用systemjs来加载依赖关系。
我是这样加载Rxjs的:
... paths: { "rxjs/*": "node_modules/rxjs/bundles/Rx.umd.min.js" }, ...
使用这个来代替使用path:
var map = { ... 'rxjs': 'node_modules/rxjs', ... } var packages = { ... 'rxjs': { main: 'bundles/Rx.umd.min.js', defaultExtension: 'js' } ... }
这个systemjs加载库的方式的一点点改变解决了我的问题。
我愚蠢的错误是,我忘记添加/add
需要观察。
是:
import { Observable } from 'rxjs/Observable'; import 'rxjs/observable/of';
这在视觉上看起来OK,因为rxjs/observable/of
文件实际上是存在的。
应该:
import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/of';