Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:无法读取属性';forEach&x27;PDF组件中未定义的_Javascript_Angular_Typescript_Foreach_Angular5 - Fatal编程技术网

Javascript TypeError:无法读取属性';forEach&x27;PDF组件中未定义的

Javascript TypeError:无法读取属性';forEach&x27;PDF组件中未定义的,javascript,angular,typescript,foreach,angular5,Javascript,Angular,Typescript,Foreach,Angular5,我犯了以下错误:我做错了什么 ng:///AppModule/PDFComponent.ngfactory.js:7 ERROR TypeError: Cannot read property 'forEach' of undefined at jspdf.plugin.autotable.min.js:12 at Object.e.parseInput (jspdf.plugin.autotable.min.js:12) at Object.s.API.autoTabl

我犯了以下错误:我做错了什么

ng:///AppModule/PDFComponent.ngfactory.js:7 ERROR TypeError: Cannot read property 'forEach' of undefined
    at jspdf.plugin.autotable.min.js:12
    at Object.e.parseInput (jspdf.plugin.autotable.min.js:12)
    at Object.s.API.autoTable (jspdf.plugin.autotable.min.js:12)
    at PDFComponent.push../src/app/Shared/Directives/Download/pdf-generator.component.ts.PDFComponent.downloadPDF (main.js:339)
    at Object.eval [as handleEvent] (ng:///AppModule/PDFComponent.ngfactory.js:13)
    at handleEvent (vendor.js:74287)
    at callWithDebugContext (vendor.js:75796)
    at Object.debugHandleEvent [as handleEvent] (vendor.js:75383)
    at dispatchEvent (vendor.js:70702)
    at vendor.js:71327
以下是我的pdf组件

import { Component, Input, EventEmitter, Output,Inject  } from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AuthService} from '../../Services/auth.service';
import * as jsPDF from 'jspdf';
import 'jspdf-autotable';

declare var jsPDF: any; // Important
@Component({
    selector: 'pdf-download',
    templateUrl: './pdf-generator.component.html',

})
export class PDFComponent   {
    @Input() downloadData: any; 
    @Input() columns: any; 
    @Input() reportName: string; 
    constructor(private authService: AuthService) { }
    // public columns=[];
    downloadPDF(){
        debugger;

        var data = this.downloadData;

        var doc = new jsPDF('landscape');

        //..................................................Row1 start
        var imgData = 'data:image/png;base64,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';
        doc.addImage(imgData, 'PNG', 0, 5);

        doc.setFontSize(16);
        //doc.setFontType("bold");
        doc.text(100, 15, "Report Name: "+this.reportName);

        doc.setFontSize(10);
       // jaison doc.text(230, 15, "User: "+this.authService.getLoginUserData().FullName);
        //..................................................Row1 END

         //..................................................Row2 start
        doc.setFontSize(10);
        // doc.setFontType("normal")
        doc.text(10, 25, "Date: " + new Date().toDateString() + " Time: " + new Date().toLocaleTimeString());
        //doc.text(5, 25, "1st");

        //doc.setFontSize(10);
       //doc.text(120, 25, "2nd");

        //doc.setFontSize(10);
        // doc.text(230, 25, "3rd");
         //..................................................Row2 END



        var rows = [];
        if(data.length>0)
        {
            for (var key in data) {
                debugger;
                rows.push(data[key]);
            }
        }
        else
        {
            doc.setFontSize(10);
            doc.text(230, 35, "No Data Found");
        }


        doc.autoTable(this.columns, rows, {
            styles: {
                //cellPadding: 1,
                fontSize: 10,
                rowHeight: 8,
                overflow: 'linebreak'
            },
            headerStyles: { fillColor: [65, 85, 99], valign: 'middle' },

            createdCell: function (cell, data) {
                if (cell.raw?cell.raw.toLowerCase() == "false" || cell.raw.toLowerCase() == "error":"") {
                    cell.styles.textColor = "#FF0718";
                }
                else if (cell.raw?cell.raw.toLowerCase() == "success" || cell.raw.toLowerCase() == "true":"") {
                    cell.styles.textColor = "#2ACE1E";
                }
                else if (cell.raw ? cell.raw.toLowerCase() == "fail" || cell.raw.toLowerCase() == "failed":"") {
                    cell.styles.textColor = "#FF0718";
                }
            },

            //tableWidth: 'wrap',
            theme: 'grid',
            //pageBreak: 'auto',
            margin: { left: 15, right: 5 ,top:40}
        });

        doc.save(this.reportName+".pdf");
    }

testdownload(){
    debugger;
    // for(var key in  this.downloadData[0])
        // {
        //     this.columns.push({title:key,dataKey:key})
        // }
    var columns = [
      {title: "ID", dataKey: "id"},
      {title: "Name", dataKey: "name"}, 
      {title: "Country", dataKey: "country"}, 
  ];
  var rows = [
      {"id": 1, "name": "Shaw", "country": "Tanzania"},
      {"id": 2, "name": "Nelson", "country": "Kazakhstan"},
      {"id": 3, "name": "Garcia", "country": "Madagascar"},
  ];
    var doc = new jsPDF('p', 'pt');
    doc.autoTable(columns, rows);
    doc.save("table.pdf");
  }
}

当您访问
doc.autoTable(this.columns
)时,
this.columns
是一个数组吗?您可以尝试
@Input()columns:any[]=[]
;您对
这个.columns
有任何值吗?是的column有值,我尝试了any[]=[];没有Lucka根据这一点,似乎我们需要将选项作为一个对象提供。您也可以对此进行研究。当我将虚拟值添加到此.columns中时,我可以毫无错误地下载pdf,但我不知道这些列是如何填充的。