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

时间:2018-08-23 07:40:02

标签: javascript angular http

append的方法描述为

  

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

set的方法描述为

  

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

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

谢谢

3 个答案:

答案 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仍将为其添加一个新值。