angulars HttpParams对象的set和append方法有什么区别?

Mau*_*ice 6 javascript http angular

的方法说明append

使用给定参数名的附加值构造一个新主体。

而对于该方法的描述set就是

为给定的参数名构造一个具有值的新主体。

但是,append您也可以为参数名称设置新值。这两种方法都会在不存在该参数的情况下创建该参数,因此我想知道为什么有两种方法几乎可以完成相同的事情,以及何时应使用一种代替另一种方法。

谢谢

rit*_*taj 9

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')); 
Run Code Online (Sandbox Code Playgroud)

paramsSet将仅具有['set2']作为值,而paramsAppend将具有["append", "append2"]


Cét*_*tia 5

Setvalue为给定设置唯一key

params.set('toto', '1').set('toto', '2') // toto=2
Run Code Online (Sandbox Code Playgroud)

Appendvalue为给定追加另一个key

params.set('toto', '1').append('toto', '2') // toto=1&toto=2
Run Code Online (Sandbox Code Playgroud)