让我们来看看
rxjs/Rx
模块导出了什么:
export { Subject, AnonymousSubject } from './Subject';
export { Observable } from './Observable';
export { Operator } from './Operator';
export { Observer } from './Observer';
export { Subscription } from './Subscription';
export { Subscriber } from './Subscriber';
export { AsyncSubject } from './AsyncSubject';
export { ReplaySubject } from './ReplaySubject';
export { BehaviorSubject } from './BehaviorSubject';
...
import './add/observable/bindCallback';
import './add/observable/bindNodeCallback';
import './add/observable/combineLatest';
...
因此,它导出了 RxJs
类,并从 add
文件夹中导入运算符。因此,您可以看到它加载了库中的所有内容。但它不会导出任何全局对象。因此,您需要像这样使用命名导出:
import * as Rx from 'rxjs/Rx'
要使用一个已导出的类:
Rx.Observable.of(12, 3);
这会模拟使用bundle加载库时的情况 - 一个全局的`Rx`对象:
<script src="rxjs/bundles/Rx.js">
如果你想在不使用全局对象Rx
的情况下使用Observable
,你需要单独导入它:
import { Observable } from '@rxjs/Observable';
Observable.of(1);
同时导入两个模块:
import { Observable } from '@rxjs/Observable';
import 'rxjs/Rx';
这不是一个好的实践方法,但如果你不想单独导入每个运算符,则可能会使用它。
另请参阅如何正确地从rxjs
包中导入运算符。