簡體   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