Angular 忽略使用Typescript在获取请求时未定义的属性集

Angular 忽略使用Typescript在获取请求时未定义的属性集,angular,typescript,Angular,Typescript,我正试图从服务器请求一些数据。当我将属性的模型更改为未定义时,将在查询字符串中发送此“未定义”字符串 let filterModel = new GroupFilterModel(); filterModel.status = anycondition ? "opened" : undefined; this.http.get<GroupModel[]>("apiurl", { params: filterModel }); 我希望避免发送状态变量。我如何才能有这种行为?您可以使用

我正试图从服务器请求一些数据。当我将属性的模型更改为未定义时,将在查询字符串中发送此“未定义”字符串

let filterModel = new GroupFilterModel();
filterModel.status = anycondition ? "opened" : undefined;
this.http.get<GroupModel[]>("apiurl", { params: filterModel });

我希望避免发送状态变量。我如何才能有这种行为?

您可以使用lodash删除具有未定义和空值的属性,如下所示:

let filterModel = new GroupFilterModel();
filterModel.status = anycondition ? "opened" : undefined;
this.http.get<GroupModel[]>("apiurl", { params: _.pickBy(filterModel) });
让filterModel=newgroupfiltermodel();
filterModel.status=任何条件?“打开”:未定义;
this.http.get(“apiurl”,{params:u.pickBy(filterModel)});
有关使用vanilla JS的其他解决方案,请参阅:


在ES6中使用这一衬里:

Object.keys(obj).forEach(key => obj[key] === undefined ? delete obj[key] : '');
仿佛:

filterModel.status = anycondition ? "opened" : undefined;
const model = Object.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
this.http.get<GroupModel[]>("apiurl", { params: model });
filterModel.status = anycondition ? "opened" : undefined;
const model = Object.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
this.http.get<GroupModel[]>("apiurl", { params: model });
Object.prototype.StripUndefined = function StripUndefined() {
  return this.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
};