rxjs平面图缺失
我尝试链接多个rx.js观测值并传递数据rxjs平面图缺失,rxjs,observable,reactive-extensions-js,Rxjs,Observable,Reactive Extensions Js,我尝试链接多个rx.js观测值并传递数据Flatmap应该是fitting操作符,但导入为 import { Observable } from 'rxjs/Observable'; 找不到: Error TS2339: Property 'flatmap' does not exist on type 'Observable<Coordinates>' 答案很简单: 在这个版本的rxjs中,该操作符被称为mergeMap 编辑: 此外,您可能必须使用import'rxjs/ad
Flatmap
应该是fitting操作符,但导入为
import { Observable } from 'rxjs/Observable';
找不到:
Error TS2339: Property 'flatmap' does not exist on type 'Observable<Coordinates>'
答案很简单: 在这个版本的rxjs中,该操作符被称为
mergeMap
编辑:
此外,您可能必须使用
import'rxjs/add/operator/mergeMap'
在我的例子中,我需要为mergeMap导入增强:
import 'rxjs/add/operator/mergeMap';
由于flatMap是mergeMap的别名,导入上面的模块将使您能够使用flatMap。它对我很有用
import { Observable } from 'rxjs/Rx';
正确的导入应如下所示:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/mergeMap';
导入模块mergeMap
将使您能够在代码中使用flatMap
当您将从'rxjs/Rx'导入代码时,import{Observable}代码>,不需要额外的mergeMap
导入,但在AoT编译过程中可能会出现错误
ERROR in ./node_modules/rxjs/_esm5/observable/BoundCallbackObservable.js
Module build failed: TypeError: Cannot read property 'type' of undefined
在RxJS 5.5+中,flatMap
操作符已重命名为mergeMap
。相反,您现在应该将mergeMap
操作符与pipe
结合使用
您仍然可以使用别名flatMap
使用flatMap
RxJS v5.5.2是Angular 5的默认依赖版本
对于您导入的每个RxJS操作符,包括mergeMap
,现在应该从“RxJS/operators”导入并使用管道操作符
在可观察的Http请求上使用mergeMap的示例
请注意,flatMap
替换为mergeMap
,并且使用pipe
操作符以与点链接类似的方式组合操作符
有关出租运营商的更多信息,请参阅rxjs文档
快速更新-2019年5月
使用rxjs v6.5.1
作为mergeMap
操作符导入,例如/
import { Observable, from, of } from "rxjs";
import { map, filter, mergeMap } from "rxjs/operators";
然后与新的管道
功能一起使用,例如/
var requestStream = of("https://api.github.com/users");
var responseStream = requestStream.pipe(
mergeMap(requestUrl => {
console.log(requestUrl);
... // other logic
return rp(options); // returns promise
})
);
flatMap是它的别名,但使用大写的mpease更新您的答案以包括import'rxjs/add/operator/mergeMap'代码>因为它完成了最后的魔法!!感谢@Chris Piockok,虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请阅读本文以提供高质量的答案。这就是你如何包含不必要的代码并使你的包比需要的大。至少在大多数情况下是这样。注意:这是平面地图,而不是平面地图。我认为这是Angular/typescript的最佳答案。你们认为呢?
import { Observable, from, of } from "rxjs";
import { map, filter, mergeMap } from "rxjs/operators";
var requestStream = of("https://api.github.com/users");
var responseStream = requestStream.pipe(
mergeMap(requestUrl => {
console.log(requestUrl);
... // other logic
return rp(options); // returns promise
})
);