Вложенная реактивная форма отображает конкретные пустые FormGroups в json? - PullRequest
0 голосов
/ 16 октября 2019

У меня есть вложенная реактивная форма, подобная следующей:

this.form = this.fb.group({
      ies_Cabecera: this.fb.group({
        cab_DatosEstablecimiento: this.fb.group({
            cab_NIFEs: this.fb.control(''),
            cab_CAEEs: this.fb.control('')
      }),
      ies_Cuerpo: this.fb.group({
        ies_Asiento: this.fb.group({
          ies_DatosIdentificativosAsiento: this.fb.group({
            ies_NumReferenciaInterno: this.fb.control(''),
            ies_NumAsientoPrevio: this.fb.control('')
          }),
          ies_DatosFecha: this.ies_DatosFecha = this.fb.group({
              tip_FechaMovimiento: this.fb.control(''),
              tip_FechaRegistroContable: this.fb.control('')
          }),
       })
    })
})

Что мне нужно:

При выполнении JSON.Parse(this.form.getRawValue()) мне нужно некоторые FormGroups всегда появляются в JSON, даже если их дочерние элементы управления не имеют значения.

Пример Когда tip_FechaMovimiento и tip_FechaRegistroContable не заполнены:

{
    "ies_Cabecera": {
        "cab_DatosEstablecimiento": {
            "cab_NIFEs": "xxxx",
            "cab_CAEEs": "xxxx"
        }
    },
    "ies_Cuerpo": {
        "ies_Asiento": {
            "ies_DatosIdentificativosAsiento": {
                "ies_NumReferenciaInterno": "xxxx",
                "ies_NumAsientoPrevio": "xxxx"
            },
            "ies_DatosFecha": {
                --EMPTY--
            }
        }
    }
}

Есть ли способ заставить JSON.Parse некоторые поля (FormGroups) всегда появляться? Благодарю.

Для удаления пустых полей я использую этот код:

let output = JSON.parse(
  JSON.stringify(this.form.getRawValue()),
  (key, value) => value === '' ? undefined : value
);
output = JSON.parse(
  JSON.stringify(output),
  (key, value) => Object.entries(value).length === 0 ? undefined : value
);
...