Javascript pdfmake表格中的嵌套数组-角度

Javascript pdfmake表格中的嵌套数组-角度,javascript,angular,ionic-framework,pdfmake,Javascript,Angular,Ionic Framework,Pdfmake,我正在尝试使用pdfmake生成一个pdf,其中包含一个表。这是我正在使用的数据结构: affiObj = { nroAfiliado: '', dni: '', apellido: '', nombre: '', domicilio: '', email: '', telFijo: '', telCel: '', dadorSangre: '', cargos: [], fechaIngDoc: '',

我正在尝试使用pdfmake生成一个pdf,其中包含一个表。这是我正在使用的数据结构:

affiObj = {
    nroAfiliado: '',
    dni: '',
    apellido: '',
    nombre: '',
    domicilio: '',
    email: '',
    telFijo: '',
    telCel: '',
    dadorSangre: '',
    cargos: [],
    fechaIngDoc: '',
    fechaIngDocProv: '',
  }

  cargoObj = {
    establecimiento: '',
    nivel: '',
    situacionRev: '',
    espCurricular: ''
  }
cargos是cargoObj对象的数组。当我试图显示这些数据时,我得到一个错误,表示表的格式不正确(未定义的单元格)。只有在必须显示嵌套数组时才会发生这种情况。
在我的代码中,我有一个方法,它获取选定的数据并形成数组,我将传递给下一个组件以生成表:

  loadData() {
    this.checkedItems = this.listaCampos.filter(value => {
      return value.isChecked;
    });
    this.listaAffi.forEach(afi => {
      this.affiliateService.getById(afi.id).subscribe(x => {
        let affi = Object.create(this.affiObj)
        for (let e of this.checkedItems) {
          if (e.id == "nroAfiliado") {
            let i = this.columns.indexOf('nroAfiliado')
            if (i === -1) {
              this.columns.push('nroAfiliado')
            }
            affi.nroAfiliado = x.nroAfiliado;
          }

          if (e.id == "dni") {
            let i = this.columns.indexOf('dni')
            if (i === -1) {
              this.columns.push('dni')
            }
            affi.dni = x.dni
          }

          if (e.id == "apellido") {
            let i = this.columns.indexOf('apellido')
            if (i === -1) {
              this.columns.push('apellido')
            }
            affi.apellido = x.apellido
          }

          if (e.id == "nombre") {
            let i = this.columns.indexOf('nombre')
            if (i === -1) {
              this.columns.push('nombre')
            }
            affi.nombre = x.nombre
          }

          if (e.id == "domicilio") {
            let i = this.columns.indexOf('domicilio')
            if (i === -1) {
              this.columns.push('domicilio')
            }
            affi.domicilio = x.domicilio
          }

          if (e.id == "email") {
            let i = this.columns.indexOf('email')
            if (i === -1) {
              this.columns.push('email')
            }
            affi.email = x.email
          }

          if (e.id == "telFijo") {
            let i = this.columns.indexOf('telFijo')
            if (i === -1) {
              this.columns.push('telFijo')
            }
            affi.telFijo = x.telFijo
          }

          if (e.id == "telCel") {
            let i = this.columns.indexOf('telCel')
            if (i === -1) {
              this.columns.push('telCel')
            }
            affi.telCel = x.telCel
          }

          if (e.id == "esDador") {
            let i = this.columns.indexOf('esDador')
            if (i === -1) {
              this.columns.push('esDador')
            }

            if (x.esDador == true) {
              affi.esDador = 'SÍ'
            } else { affi.esDador = 'NO' }
          }

          if (e.id == "cargos") {
            x.cargos.forEach(a => {
              let cargo = Object.create(this.cargoObj)

              this.columns.push('establecimiento');

              cargo.establecimiento = a.establecimiento

              this.columns.push('nivel');

              cargo.nivel = a.nivel

              this.columns.push('situacionRev');

              cargo.situacionRev = a.situacionRev

              if (a.nivel == 'Secundario') {
                this.columns.push('espCurricular');
                cargo.espCurricular = a.espCurricular
              }

              affi.cargos.push(cargo)
            })
            console.log("cargos", affi.cargos)
          }

          if (e.id == "fechaIngDoc") {
            let i = this.columns.indexOf('fechaIngDoc')
            if (i === -1) {
              this.columns.push('fechaIngDoc')
            }
            affi.fechaIngDoc = x.fechaIngDoc
          }

          if (e.id == "fechaIngDocProv") {
            let i = this.columns.indexOf('fechaIngDocProv')
            if (i === -1) {
              this.columns.push('fechaIngDocProv')
            }
            affi.fechaIngDocProv = x.fechaIngDocProv
          }
        }
        console.log("columns", this.columns)
        this.tableBody.push(affi)
      })
    })
    this.presentModal(this.tableBody, this.columns)
  }
这很好(当然货物除外)。
在另一个组件中,我有以下代码:

  buildTableBody = function (data, columns) {
    this.body = [];

    data.forEach(row => {
      var dataRow = [];

      columns.forEach(column => {
        dataRow.push(row[column]);
      })

      this.body.push(dataRow);
    });
    return this.body;
  }

  table = function (data, columns) {
    return {
      table: {
        body: this.buildTableBody(data, columns)
      },
      layout: 'noBorders'
    };
  }


  pdfGen() {
    pdfmake.vfs = pdfFonts.pdfMake.vfs;
    var dd = {
      content: [
        {
          columns: [{
            image: 'adosacLogo',
            width: 90
          }, [
            { text: 'ASOCIACIÓN DOCENTES DE SANTA CRUZ', style: 'header', margin: [10, 20, 10, 0] },
            { text: 'PERSONERÍA GREMIAL 1504', style: 'header' },
            { text: 'Comisión Directiva Filial El Calafate', style: 'header', margin: [10, 0, 10, 70] },
          ],
          {
            image: 'logoCteraCta',
            width: 100
          },
          ],
        },
        this.table(this.datos, this.columnas)
      ],
      footer: {
        columns: [
          { text: 'ADOSAC - Reporte de afiliado', alignment: 'center' }
        ]
      },
    }
    pdfmake.createPdf(dd).open();
  }
我如何解决这个问题