首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ids列表上的mergeMap无法生成

Ids列表上的mergeMap无法生成
EN

Stack Overflow用户
提问于 2018-11-11 02:46:38
回答 2查看 368关注 0票数 0

这里的语法有什么问题?mergeMap(names => names),

代码语言:javascript
运行
复制
getIds(): void { 
this.myservice
.getIds.pipe( mergeMap(id => this.getNames(id)), 
mergeMap(names => names), toArray() ) 
} 

myservce.ts具有以下特性:

代码语言:javascript
运行
复制
getIds():Observable<Ids>{
const url = 'http://localhost:4000';
return this.http
    .post(url, '')
    .map(({ Ids }: any) => Ids.map(item => ({Id: item.Id, 
    Name: item.Name }))) as Observable<Ids>;
}

getNames(data: Ids):Observable<any[]> {
  const url ='http://localhost:5000';
  return this.http
    .post(url,data)
    .pipe(map(({ Results }: any) => Results[0].results.map(item => ({Id: item.ID, Name: item.Name }))));
    }

编译器错误是(作为一个新手,我不能确定):

代码语言:javascript
运行
复制
ERROR in src/app/cvetable/mcomponent.ts(132,19): error TS2345:
Argument of type '(names: {}) => {}' is not assignable to parameter 
of type '(value: {}, index: number) => ObservableInput<any[]>'. 
Type '{}' is not assignable to type 'ObservableInput<any[]>'. 
Type '{}' is not assignable to type 'Iterable<any[]>'. 
Property '[Symbol.iterator]' is missing in type '{}'.
EN

Stack Overflow用户

发布于 2018-11-11 03:05:45

您的服务中的getIds方法存在严重错误:

它应该是这样的。由于您使用的是HttpClient,而您的eg在Angular 7中使用Rxjs 6+,因此您必须将.pipe调用链接到您的可观察值,以便对其应用运算符。在.pipe调用中,您可以放置一个逗号分隔的运算符列表:

代码语言:javascript
运行
复制
getIds(obj):Observable<Ids>{
  return this.http
    .post(this.url, obj)
    .pipe(
      map((Ids: any) => Ids.map(item => ({Id: item.Id, Name: item.Name }) ) )
    )
}

这是一个修复了错误的。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53242276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档