讓我們來看看有什麼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,並將它們僅存在那裏。您只需導入一次即可工作。 –