我使用这个伟大的回购用于我的角度2测试项目(TypeScript) - https://github.com/qdouble/angular-webpack2-starter。我需要使用 Observable.of(..)。当我尝试导入它时:
import { Observable } from "rxjs/Observable";
import { of } from 'rxjs/observable/of';
我明白了:
''类型' typeof Observable'。
上不存在
我也尝试过以下方式:
import { Observable } from "rxjs/Observable";
import { of } from 'rxjs/add/observable/of'; // notice 'add'
我得到了:
node_modules / rxjs /添加/可观察的/的"'没有导出的成员' of#39;。
那么,如何为Observable导入这个Of()静态方法
答案 0 :(得分:21)
您不必从 {of}
导入'rxjs/add/observable/of'
。您可以直接使用
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/of";
或者您可以从" rxjs / Rx"中导入 不良做法 Observable
。捆绑所有操作员。
import { Observable } from "rxjs/Rx";
来自https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
从版本5.5开始,我们已经发布了#34;可管理运算符",可以在rxjs /运算符中访问(注意复数"运算符")。这些是一个更好的方法,只需要提供你需要的运算符而不是"补丁"在rxjs / add / operator /*.
中找到的运算符
现在"修补"进口将被弃用,最好使用严格的进口。
import { of as observableOf } from 'rxjs/observable/of'
并像那样使用
const myObs$: Observable<number> = observableOf(1, 2, 3)
答案 1 :(得分:13)
从 RxJS 6 开始,由于更强大的直观API表面,导入大大简化并减少混乱现象:
of
等创建方法直接从'rxjs'
导入:
import { of } from 'rxjs';
所有可管道的运算符都是从'rxjs/operators'
导入的,例如:
import { tap, map } from 'rxjs/operators';
如果您直接从RxJS 5更新,您甚至可以使用RxJS的TSLint规则,这将自动修复您的导入到更新的简化API:
npm i -g rxjs-tslint
rxjs-5-to-6-migrate -p [path/to/tsconfig.json]