我需要将以下方法转换为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;
}
答案 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;
}