【问题标题】:FormGroup FormArray - remove only one element object by name. AngularFormGroup FormArray - 按名称仅删除一个元素对象。角
【发布时间】:2018-12-06 15:33:09
【问题描述】:
    {
  "companies": [
    {
      "company": "example comany",
      "projects": [
        {
          "projectName": "example project",
          "numero": ""
        },
        {
          "projectName": "example project",
          "numero": ""
        },
        {
          "projectName": "example project",
          "numero": ""
        },
        {
          "projectName": "example project",
          "numero": "3"
        }
      ]
    }
  ]
}

我想在发送表单 POST 请求之前从 formGroup 中删除 projectName。是否可以?我尝试使用重置方法,但这会删除所有元素 https://stackblitz.com/edit/generar-json?file=app%2Fapp.component.ts

【问题讨论】:

  • 你能不能把这个格式好一点?
  • 我找不到执行发布请求的代码。您能否添加您当前的版本并描述未按预期工作的内容?

标签: javascript json angular formarray


【解决方案1】:

基本上你需要一张地图,在没有你选择的选项的情况下获得一个新的Array

let object = {
  "companies": [{
    "company": "example comany",
    "projects": [{
        "projectName": "example project",
        "numero": ""
      },
      {
        "projectName": "example project",
        "numero": ""
      },
      {
        "projectName": "example project",
        "numero": ""
      },
      {
        "projectName": "example project",
        "numero": "3"
      }
    ]
  }]
}

object.companies = object.companies.map(company => {
  company.projects = company.projects.map(project => {
    delete project['projectName']; // we delete the key on project each.
    return project;
  });
  return company
});
console.log(object)

【讨论】:

  • 谢谢我发自内心的感谢我还有很多东西需要学习,努力做最难的事情,我尝试创建一个formgroup的平等副本
  • 你可以在做这个之前做一个深拷贝,考虑到delete project['projectName']是破坏性的,你将无法再次使用它。除非您已经拥有该信息的副本:D
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 2023-02-01
  • 2018-07-06
  • 2016-10-07
  • 2020-09-06
  • 2019-03-06
相关资源
最近更新 更多