繁体   English   中英

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

[英]Transform http service response in Angular using rxjs

这是用例:

  • 我正在调用一种返回 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,
       }, ...
    ]

提前致谢。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM