使用 Typescript 忽略 Angular 中 GET 请求上未定义的属性集

Gab*_*ada 5 typescript angular

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

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

发送的查询字符串是这样的:

apiurl?status=undefined
Run Code Online (Sandbox Code Playgroud)

我想避免发送状态变量。我怎么会有这种行为?

Yas*_*ser 3

在 ES6 中使用这一行:

Object.keys(obj).forEach(key => obj[key] === undefined ? delete obj[key] : '');
Run Code Online (Sandbox Code Playgroud)

仿佛:

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

您可以更进一步,使其成为对象的扩展:

Object.prototype.StripUndefined = function StripUndefined() {
  return this.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
};
Run Code Online (Sandbox Code Playgroud)