Javascript pdfmake表格中的嵌套数组-角度
我正在尝试使用pdfmake生成一个pdf,其中包含一个表。这是我正在使用的数据结构: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: '',
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();
}
我如何解决这个问题