我很困惑如何导入这些运算符。我可以导入一些
import 'rxjs/add/operator/do';
有些我不能。例如,这不起作用:
import 'rxjs/add/operator/map';
(我在rxjs / add / operator中检查过,map存在)。
基本上我要做的是在Angular4中重现这个:
var requestStream = Rx.Observable.just('https://api.github.com/users');
var responseStream = requestStream
.flatMap(function(requestUrl) {
return Rx.Observable.fromPromise(jQuery.getJSON(requestUrl));
});
responseStream.subscribe(function(response) {
// render `response` to the DOM however you wish
});
我也想知道如何处理just
运算符,因为我在rxjs / add / operator中看不到它......
感谢您的帮助
答案 0 :(得分:13)
RxJS中有静态和实例运算符:
static
of
interval
instance
map
first
您可能希望在Observable
全局对象或可观察的实例上使用这些,如下所示:
Observable.of()
observableInstance.map()
为此,您需要从add
包中导入模块:
import 'rxjs/add/observable/of'
import 'rxjs/add/operator/map'
导入模块时,它实际上是通过添加与运算符对应的方法来修补Observable
类或Observable
原型。
但您也可以直接导入这些运算符,而不是修补Observable
或observableInstance
:
import { of } from 'rxjs/observable/of';
import { map } from 'rxjs/operator/map';
of()
map.call(observableInstance)
通过在RxJs@5.5中引入lettable运算符,您现在应该利用内置的pipe
方法:
import { of } from 'rxjs/observable/of';
import { map } from 'rxjs/operators/map';
of().pipe(map(), ...)
中了解详情
答案 1 :(得分:1)
较低版本的rxjs有文件夹
<强> node_modules \ rxjs \操作者强>
更高版本的rxjs有文件夹
<强> node_modules \ rxjs \运营商强>
请确保地图中存在打字稿文件位置,其他操作符存在于其中。
如果问题仍然存在,请从node_modules中删除rxjs文件夹并运行命令
npm install --save
通常这会导致由于更高版本的rxjs降低软件包版本。