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

Rei*_*eid 4 http-parameters angular angular-httpclient angular6

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

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

if (addOptionalParam)
      params.append('optionalParamKey', 'optionalParamValue');
Run Code Online (Sandbox Code Playgroud)

另外,我可以使用常量变量作为 fromObject 参数的键吗?我试过这个,但它不起作用:

  const ConstantVariableForKeyName = 'key';
  const params = new HttpParams({
  fromObject : {
    {{ConstantVariableForKeyName}}: 'paramValue'
  }
});
Run Code Online (Sandbox Code Playgroud)

Fre*_*ond 6

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

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

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

关于您的第二个问题,请改用 set 或 append ,如下所示:

const constParamKey = 'myKey';
 params = params.append(constParamKey , 'Value');
Run Code Online (Sandbox Code Playgroud)