javascript - Angular6:表单=如何选择我将发送哪些参数

标签 javascript angular angular6

在 post 方法中,我只需要发送在表单(api 规范)中有值(value)的参数,而不是所有数据。有没有办法只发送触摸的字段

{"keywords":"key, pase","fps":0,"productionYear":1920,"contentType":2,"country":"US", "tags":["trap","bad","day","anderson"],"related":[], "series": ""}

这是编辑电影的示例请求放置方法,最后我只想发送这个不是空字符串或空数组的方法。

在这里提出请求:

return this.http
      .put(`${this.config.apiUrl}/` + requri + `/` + id, obj)
      .pipe(
        catchError(error => {
          return this.errServ.handleError(error);
        })
      );

最佳答案

在请求正文中发送对象之前,您必须手动执行此工作。考虑创建一个单独的函数来完成这项工作。

//{"keywords":"key, pase","fps":0,"productionYear":1920,"contentType":2,"country":"US", "tags":["trap","bad","day","anderson"],"related":[], "series": ""}
takeNonEmptyObjects (obj) {
  const result = {}
  for (var k in obj) {
    if (!obj.hasOwnProperty(k)) return;
    const value = obj[k]
    if (value === null || value === undefined) || value === "")) {
      result[k] = obj[k];
    }
  }
  return result;
}

如果您希望对所有请求正文应用上述行为,请考虑在发出请求之前从 HttpIntercepter 调用上述函数。

关于javascript - Angular6:表单=如何选择我将发送哪些参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553811/

相关文章:

angular - 非常长时如何在 Visual Studio Code 中复制非类型化函数 (TypeScript) 的推断类型

带有 MVC6 的 angular2,浏览器无法访问 node_modules 内的脚本

android - deviceready 事件未在 Angular 混合应用程序中触发

javascript - onkeyup 或 onkeypress 仅在 X 个字符长度之后

javascript - 未捕获( promise )TypeError : Cannot read property 'buildFromTemplate' of undefined at HTMLButtonElement. getVideoSources

angular - 我们如何订阅 Angular Material Tables 中当前显示的数据

spring - 如何在 Angular 6 中使用 webSocket

javascript - 具有嵌入内容的 <object/> 元素的自动高度

javascript - 如何将 firebase 身份验证/密码错误显示为窗口警报?

javascript - 在各个列中分配值