append
的方法描述为
使用给定值的附加值构造一个新主体 参数名。
set
的方法描述为
使用给定参数名的 new 值构造一个新主体。
但是使用append
也可以为参数名设置一个新值。这两种方法都会在该参数不存在时创建该参数,所以我想知道为什么有两种方法几乎可以完成相同的事情,以及何时应该使用一种方法代替另一种方法。
谢谢
答案 0 :(得分:4)
HttpParams值是值的数组。
set
值将覆盖数组中的所有值。
当您append
的值时,它将把新值推入现有数组。
您可以像这样检查差异:
let paramsSet = new HttpParams();
paramsSet = paramsSet.set('paramName', 'set');
let paramsAppend = new HttpParams();
paramsAppend = paramsAppend.set('paramName', 'append');
paramsSet = paramsSet.set('paramName', 'set2');
paramsAppend = paramsAppend.append('paramName', 'append2');
console.log(paramsSet.getAll('paramName'));
console.log(paramsAppend.getAll('paramName'));
paramsSet
仅具有['set2']
作为值,而paramsAppend
将具有["append", "append2"]
。
答案 1 :(得分:3)
Set
为给定的value
设置唯一的key
:
params.set('toto', '1').set('toto', '2') // toto=2
Append
为给定的value
附加另一个key
:
params.set('toto', '1').append('toto', '2') // toto=1&toto=2
答案 2 :(得分:0)
如果所有参数都是唯一的,那么您的行为是相同的;但是,如果您尝试重用参数,则行为将有所不同。
Set将添加或覆盖该参数的现有值。 即使该参数已经存在,Append仍将为其添加一个新值。