switchMap处理Angular中的可观察对象列表

时间:2018-12-07 05:49:15

标签: angular http observable

我正在使用angular,并且有一个名为nameservice.ts的服务,如下所示:

log4j.appender.activity.layout=org.apache.log4j.CsvParameterLayout
log4j.appender.activity.layout.delimiter=,
log4j.appender.activity.layout.header=col1,col2,col3,col4

在组件tablecomp.ts中,我调用getIds(),然后在返回的每个Id上,我调用getNames。

getIds():Observable<Ids> {
return this.http.post(this.url,'').pipe(map(({ Ids }:any) => Ids.map(item=>({Id:item.Id})))) as Observable<Ids>;
}
getNames(data: Ids):Observable<any[]> {
    return this.http
        .post(url,data)
        .pipe(map(({ Names}: any) => Names.map(item => ({id: item.ID, name: item.name }))));
        }

我在这里做错了什么?浏览器显示未定义switchMap()中的ID。

1 个答案:

答案 0 :(得分:0)

添加水龙头,看看管子里有什么东西

getallNames(): any {
           this.nameservice.getIds().pipe(
                    tap(ids => { console.log(ids); }),
                    switchMap((ids: Ids) => this.nameservice.getNames(ids))
            ).subscribe((response) => {
                    console.log(response)
            })
  }

会告诉您对getIds的调用是否返回未定义的