【发布时间】:2018-04-22 07:31:47
【问题描述】:
我正在使用 jsPDF 从 json 数据创建 pdf
responseStatus:any= [];
pdfDownload(){
this._isuGeoSubunitReportService.SubmitISUGEO(this.isugeosubunitTO)
.subscribe(data =>this.responseStatus = data,
err => console.log(err),
() => console.log('Request Completed222')
);
var header = [];
var data = [];
var totalData = [];
var doc = new jsPDF('p', 'pt', 'letter');
doc.cellInitialize();
doc.setFontSize(10);
var count = 0;
for(let isugeo of this.responseStatus.dynaModel){
count++;
for(let isugeomap of this.generateArray(isugeo.map)){
if(count==1){
header.push(isugeomap.key);
}
}
}
for(let isugeo of this.responseStatus.dynaModel){
let temp = [];
for(let isugeomap of this.generateArray(isugeo.map)){
temp.push(isugeomap.value);
}
data.push(temp);
}
console.log('Request Completed2......22'+ JSON.stringify(data));
doc.autoTable(header,data,{
margin: {horizontal:1,top:1},
styles: {overflow: 'linebreak',theme: 'grid' },columnStyles: {
0: {columnHeight: 5}
}});
doc.save('Test.pdf');
}
我通过一个 html 按钮点击调用这个函数
<button type="submit" [disabled]="!isugeoForm.form.valid" class="btn btn-
primary" (click)="pdfDownload()">Export pdf</button>
现在的问题是,当我第一次点击点击按钮时,数据不是从订阅块中出来的,并且在第一个“for”循环中给出了数据长度为零的错误。第二次点击按钮数据后显示。
为什么每次都需要两次点击才能生成正确的 pdf。
【问题讨论】:
标签: html json angular typescript for-loop