angular - 使用 HttpParams 和 FromObject 有条件地添加参数并使用变量作为键名

标签 angular angular6 angular-httpclient http-parameters

有没有办法使用 HttpParams 和 fromObject 有条件地添加参数?我尝试在实例化 HttpParams 后添加条件参数,但这不起作用:

const params = new HttpParams({
  fromObject : {
    requiredParam: 'requiredParam'
  }
});

if (addOptionalParam)
      params.append('optionalParamKey', 'optionalParamValue');

另外,我可以使用常量变量作为 fromObject 参数的键吗?我试过这个,但它不起作用:
  const ConstantVariableForKeyName = 'key';
  const params = new HttpParams({
  fromObject : {
    {{ConstantVariableForKeyName}}: 'paramValue'
  }
});

最佳答案

HttpParams 类是不可变的,因此任何添加或追加操作都会返回一个新对象。因此你的 params 变量不能是 const ,将其更改为 .

然后,每次需要操作时,只需将参数设置为返回值:

let params = new HttpParams({
  fromObject : {
    requiredParam: 'requiredParam'
  }
});
    if (addOptionalParam)
          params = params.append('optionalParamKey', 'optionalParamValue');

关于您的第二个问题,请改用 set 或 append ,如下所示:
const constParamKey = 'myKey';
 params = params.append(constParamKey , 'Value');

关于angular - 使用 HttpParams 和 FromObject 有条件地添加参数并使用变量作为键名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54314122/

相关文章:

html - Angular 6 ngx 芯片无法正确显示

node.js - Microsoft.AspNetCore.SpaServices由于 Node 模块map.d.ts而失败

javascript - 在开发模式下看到开发者控制台中的 Angular 6 单击绑定(bind)吗?

Angular 5 'Content-Type' : 'multipart/form-data' gets reset to 'application/json'

angular - 在 RxJS 中,错误回调与 .catch() 有什么区别?

angular - 合并两个 rxjs 流并仅在第一个为真时发出

具有多个命名 socket 的延迟加载模块上的 Angular2 路由

javascript - 通过 Angular 服务在 Angular 组件之间路由主题的 Angular 4/5 问题

angular - 在 Angular 单元测试中使用回车键提交表单

angular - 403错误未被catchError函数Angular 7捕获