使用rxjs在Angular中转换http服务响应

使用rxjs在Angular中转换http服务响应,angular,typescript,rxjs,Angular,Typescript,Rxjs,以下是用例: 我正在调用一个返回我ID的http方法 传递上述ID以获取对象响应的数组 答复: [ { "cuisp":"17296744", "instr_type":"Common Stock (CS)", "isConversion":"No", "issue_date":"04/31

以下是用例:

  • 我正在调用一个返回我ID的http方法
  • 传递上述ID以获取对象响应的数组
答复:

[
   {
      "cuisp":"17296744",
      "instr_type":"Common Stock (CS)",
      "isConversion":"No",
      "issue_date":"04/31/2020",
      "rev_rule":"common equity tier 1",
      "isCumulative":"Noncumulative",
      "notional_amt":"8434.695",
      "amt_transacted":"8434.695",
      "isPerpetual":"Perpetual",
      "isFixed":"Floating"
   }, ...
]
现在我想向响应中的每个对象添加
isEditable:false
。 我尝试了下面的代码

this._httpservice.getTemplateForVersion(this.selected_template).pipe(
      concatMap((res: any) => {
        return this._httpservice.getTemplateJsonData(res.id).pipe(
          mergeAll(),
          map((d: any) => {
            d['isEditable'] = false;
            return d;
          })
        );
      })
    ).subscribe(res => {
      console.log(res);
    })
然而,这只是更新响应的第一个元素。 我需要最后的答复

[
       {
          "cuisp":"17296744",
          "instr_type":"Common Stock (CS)",
          "isConversion":"No",
          "issue_date":"04/31/2020",
          "rev_rule":"common equity tier 1",
          "isCumulative":"Noncumulative",
          "notional_amt":"8434.695",
          "amt_transacted":"8434.695",
          "isPerpetual":"Perpetual",
          "isFixed":"Floating",
          "isEditable":false,
       }, ...
    ]

提前感谢。

RxJsmap操作符允许您修改流,但修改本身应该在函数内部完成:

map((d: any) => {
    return d.map(item => ({...item, isEditable: false}));        
})

可能:
返回{…d,isEditable:false}?这和我做的一样…这和我做的一样?这是什么意思?
d['isEditable']=false;返回d这与上面的排列相同。。你的建议也试过了。。没有luckIt可能无法解决您的问题,但如果将mergeAll()和map()替换为mergeMap(),则可能更容易理解发生了什么,这是正确的@用户1608841,您不需要
mergeAll()
运算符。只需使用
concatMap()
,然后使用
map()
。实际上,我认为
switchMap
更合适,但这可能并不重要,因为http调用无论如何只发出一次。因此,总共:
this.\uHttpService.getTemplateForVersion(this.selected\uTemplate).pipe(switchMap(res=>this.\uHttpService.getTemplateJsonData(res.id)),map((d:any[])=>d.map(item=>{…item,isEditable:false})。订阅(res=>{console.log(res);})