使用HttpParams下的setter方法[“ set()”]

时间:2019-02-11 04:23:16

标签: angular typescript

我需要将以下方法转换为Angular 7。 数据未设置为参数。有人可以指出我为什么不起作用吗?它说

  

错误TS2300:标识符'params'重复。

updateParamsWithAuth(params: HttpParams, appKey: string, field: string) {
let token;
if (appKey && appKey.length > 0) {
  token = this.getAccessTokenFromSession();

} else {
  token = this.getRSTokenFromSession();
  if (field === this.FIELD_ACCESS_TOKEN) {
    field = this.FIELD_RS_TOKEN;
  }
}

// params.set(field, token);
let params = new HttpParams().set(field, token);

return params;
}

2 个答案:

答案 0 :(得分:2)

您要将params作为参数传递给updateParamsWithAuth函数,并且再次在函数内部传递了params变量。 只需使用

params = new HttpParams().set(field, token);

或使用不同的标识符声明它。

let httpParams = new HttpParams().set(field, token);

答案 1 :(得分:1)

params是方法的参数,并且在返回之前声明了另一个名为params的变量,这就是问题所在。

更改此let params = new HttpParams().set(field, token);

对此params = new HttpParams().set(field, token);

  

但是我的问题是,为什么您需要在这里重新初始化?如果你   再次在此处初始化它没有意义将其作为参数传递   这种方法,不是吗?

该方法内部已经有参数,因此,我认为无需再次对其进行初始化。

如果您不希望将参数作为参数使用,则最好在该方法内部初始化新的HttpParams时从该方法中删除该参数。否则使用现有的参数。

从我的角度来看,代码应该像这样-

updateParamsWithAuth(params: HttpParams, appKey: string, field: string) {
    let token;
    if (appKey && appKey.length > 0) {
      token = this.getAccessTokenFromSession();

    } else {
      token = this.getRSTokenFromSession();
      if (field === this.FIELD_ACCESS_TOKEN) {
        field = this.FIELD_RS_TOKEN;
      }
    }

    params = params.set(field, token);

    return params;
}