繁体   English   中英

Angular2 RxJS得到'Observable_1.Observable.fromEvent不是函数'错误

[英]Angular2 RxJS getting 'Observable_1.Observable.fromEvent is not a function' error

我正在使用AngularJS 2 Beta 0,我正在尝试从窗口对象上的事件创建一个RxJS Observable。 我相信我知道在我的服务中将事件捕获为Observable的公式:

var observ = Observable.fromEvent(this.windowHandle, 'hashchange');

问题是,每次我尝试运行此代码时,都会收到一条错误消息,指出'fromEvent'不是函数。

Uncaught EXCEPTION: Error during evaluation of "click"
ORIGINAL EXCEPTION: TypeError: Observable_1.Observable.fromEvent is not a function

这似乎意味着我没有正确处理我的import ,因为RxJS没有包含在Angular 2的构建中,尽管我的应用程序的其余部分正常运行,这对我来说意味着RxJS应该是它应该的位置。

我在服务中的导入如下所示:

import {Observable} from 'rxjs/Observable';

虽然我也尝试使用它(对代码进行适当的更改),但结果相同:

import {FromEventObservable} from 'rxjs/observable/fromEvent';

我的Index.html中有以下配置:

<script>
    System.config({
        map: {
            rxjs: 'node_modules/rxjs'
        },
        packages: {
            'app': {defaultExtension: 'js'},
            'rxjs': {defaultExtension: 'js'}
        }
    });
    System.import('app/app');
</script>

有人能告诉我我做错了什么吗?

绝对不需要立即导入所有操作员! 你只是从fromEvent导入错误。 你可以这样做:

import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';

编辑:除了我已经写过的内容:使用角度的AoT-Compiler进行树抖动,根据导入的内容删除未使用的代码。 如果只是从rxjs / rx导入一些对象或函数,则编译器无法删除任何内容。 始终只需进口,您需要的!

问题似乎是import语句应如下所示:

import {Observable} from 'rxjs/Rx';

请注意, Observable是从rxjs/Rx而不是rxjs/Observable 正如@EricMartinez所提到的 ,以这种方式拉动它将自动获得所有运算符(如.map() )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM