让我们来看看有什么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);
这模拟,如果您加载使用捆绑的库,你会有什么 - 一个全球性的Rx
对象:
<script src="rxjs/bundles/Rx.js">
如果你想使用Observable
无Rx
全局对象,你需要单独导入:
import { Observable } from '@rxjs/Observable';
Observable.of(1);
导入这两种
import { Observable } from '@rxjs/Observable';
import 'rxjs/Rx';
是不是一个好的做法,但也可以使用,如果你不想分别导入每个操作员。
另请参阅How to correctly import operators from the rxjs
package。
甚至不确定该行是否可用,包名是rxjs,所以它不应该找到类似于@rxjs的内容。您应该只分别导入Observable,Subject等类型,并根据需要导入单个运算符。 –
此外,一个好的做法是将所有操作员导入组织到一个文件中,例如rxjs.imports.ts,并将它们仅存在那里。您只需导入一次即可工作。 –