Angular2 RxJS 出现 'Observable_1.Observable.fromEvent is not a function' 错误
Angular2 RxJS getting 'Observable_1.Observable.fromEvent is not a function' error
我正在使用 AngularJS 2 Beta 0,我正在尝试从 window 对象上的事件创建一个 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
,因为 Angular2 的构建中没有包含 RxJS,尽管我的应用程序的其余部分运行正常,这对我来说意味着 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>
谁能告诉我哪里做错了?
问题似乎是导入语句应该如下所示:
import {Observable} from 'rxjs/Rx';
请注意,Observable
是从 rxjs/Rx
而不是从 rxjs/Observable
引入的。 ,以这种方式拉动它会自动为您提供所有运算符(如 .map()
)。
绝对不需要一次导入所有算子!您刚刚导入 fromEvent
错误。
你可以这样做:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
编辑:除了我已经写过的内容之外:使用 angular 的 AoT 编译器进行摇树优化会根据您导入的内容删除未使用的代码。如果你只是从 rxjs/rx 中导入一些对象或函数,编译器无法删除任何东西。始终只导入您需要的!
我正在使用 AngularJS 2 Beta 0,我正在尝试从 window 对象上的事件创建一个 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
,因为 Angular2 的构建中没有包含 RxJS,尽管我的应用程序的其余部分运行正常,这对我来说意味着 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>
谁能告诉我哪里做错了?
问题似乎是导入语句应该如下所示:
import {Observable} from 'rxjs/Rx';
请注意,Observable
是从 rxjs/Rx
而不是从 rxjs/Observable
引入的。 .map()
)。
绝对不需要一次导入所有算子!您刚刚导入 fromEvent
错误。
你可以这样做:
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
编辑:除了我已经写过的内容之外:使用 angular 的 AoT 编译器进行摇树优化会根据您导入的内容删除未使用的代码。如果你只是从 rxjs/rx 中导入一些对象或函数,编译器无法删除任何东西。始终只导入您需要的!