typescript - 将 Angular 项目更新为 10 后出现 jsPDF 错误
问题描述
我更新了 Angular 项目,现在我收到了这个错误:
Argument of type '82' is not assignable to parameter of type 'string | string[]'.ts(2345)
这是评论 //HEADER TEXT 和 doc.text() 第一个数字的地方,我认为它想要字符串作为第一个参数,但我有以前版本的数字?我以前有过这样的,它正在工作..我该如何解决这个问题?
首先,我重命名了输入,因为它抛出了错误,即它不能从此导入 * as jsPDF from 'jspdf' 构建;
我将它重命名为从'jspdf'导入jsPDF;
然后这个错误被修复了,现在出现了字符串错误。
这是代码:
onPdf(){
let doc = new jsPDF('p', 'mm', 'a4');
let itmH: number = 18; //height of rectangles
let headerH: number = 14; //height of header
let offH: number = 2 //offset of rectangles
let offsetX:number = 10;
let offsetY:number = 10;
let maxWidth:number = 210 - 2*offsetX;
let pageNumber:number = 1;
doc.addPage();
doc.addPage();
// HEADER - rectangle + lines
doc.setPage(1);
doc.rect(offsetX,offsetY,maxWidth,headerH);
doc.line(55,10,55,24);
doc.line(145,10,145,24);
doc.line(55,17,145,17);
// HEADER TEXT
doc.setFontSize(12);
doc.text(82,15.5,'Bericht ' + this.oeeDb.branch);
doc.text(68,22.5, this.oeeDb.datum + ' Tagesreport ' + this.produkt);
doc.text(160,19, 'BE.11402.ADM');
//RIADKOVANIE
let stp:number = itmH + offH;
let curP:number = offsetY + headerH + offH;
let greenX:number = 55
for (let i =0;i < this.dbItems.length;i++){
// RECTANGLES
doc.rect(offsetX,curP,maxWidth,itmH);
doc.setFillColor(0, 66, 54);
doc.rect(greenX, curP, 8, itmH, 'F');
// DESCRIPTION
doc.setFontSize(10);
let desc = this.dbItems[i].description;
if (desc.length < 26){
let xAx = offsetX + 2 + Math.round((25-desc.length)*41/50);
doc.text(desc,xAx,curP+11);
} else {
let ind: number = 0;
let arrStr = desc.split(/[ ,]+/).filter(Boolean);
let strToTxt = '';
for (let k = 0; k < arrStr.length;k++){
if (k > 0){
if (strToTxt.length + arrStr[k].length > 24){
let xAx = offsetX + 2 + Math.round((25-strToTxt.length)*41/50);
doc.text(strToTxt,xAx,curP+8+(ind*5));
ind++;
strToTxt = arrStr[k];
} else {
strToTxt += ' ' + arrStr[k];
}
} else {
strToTxt = arrStr[k];
}
if (k === arrStr.length - 1 && strToTxt.length>0){
let xAx = offsetX + 2 + Math.round((25-strToTxt.length)*41/50);
doc.text(strToTxt,xAx,curP+8+(ind*5));
strToTxt = '';
}
}
};
// print RESULT
let rslt = this.getResult(i);
let xAx = greenX + 2 + 8 + Math.round((32-rslt.length)*60/64);
doc.text(rslt,xAx,curP+12);
let result:string;
if ( i === 0){
if(this.oeeDb.results[i] > this.dbItems[i].criteria[0]) {
result = 'red';
} else {
result = 'green';
}
} else {
if (this.dbItems[i].type === 'low'){
if (this.oeeDb.results[i] > this.dbItems[i].criteria[0]){
result = 'red';
} else if (this.oeeDb.results[i] > this.dbItems[i].criteria[1]){
result = 'yellow';
} else {
result = 'green';
}
} else {
if (this.oeeDb.results[i] < this.dbItems[i].criteria[0]){
result = 'red';
} else if (this.oeeDb.results[i] < this.dbItems[i].criteria[1]){
result = 'yellow';
} else {
result = 'green';
}
}
}
//trafficlights
for (let j =0 ;j < 3; j++){
if (result === 'red' && (j === 0 || i === 0)){
doc.setFillColor(255, 0, 0);
} else if (result === 'yellow' && j === 1) {
doc.setFillColor(255,255,0);
} else if (result === 'green' && (j === 2 || i === 0)){
doc.setFillColor(0,128,0);
} else {
doc.setFillColor(0, 0, 0);
}
doc.circle(greenX+4,curP+ (j*6)+3, 2.5, 'F')
// LEGEND
if (j === 0) {
doc.setFillColor(255,0,0);
} else if (j===1) {
doc.setFillColor(255,255,0);
} else {
doc.setFillColor(0,128,0);
}
if (i > 0){
doc.circle(125,curP+ (j*5)+4, 2, 'FD');
}
if (j==0 || i > 0) {
doc.setFontSize(10);
doc.text(128,curP+ (j*5)+5, this.dbItems[i].legend[j]);
}
我应该从这个替换它:
doc.text(82, 15.5, 'Bericht ' + this.oeeDb.branch);
doc.text(68, 22.5, this.oeeDb.datum + ' Tagesreport ' + this.produkt);
doc.text(160, 19, 'BE.11402.ADM');
在所有情况下都这样做?:
doc.text('Bericht ' + this.oeeDb.branch, 82, 15.5);
doc.text(this.oeeDb.datum + ' Tagesreport ' + this.produkt, 68, 22.5);
doc.text('BE.11402.ADM', 160, 19);
解决方案
推荐阅读
- python - In python adding empty list to dataframe column by using lambda raises valueError
- java - 如何访问从片段类到适配器类的方法
- node.js - 将参数从服务器端发送到 Angular
- amazon-web-services - 使用子网时 AWS Cloudformation 出现错误
- php - 用于帖子模板的 Wordpress php get_post_meta
- gis - 法国坐标转换
- react-native - STOMP 协议与 Redux + React Native 的 SockJS 中间件示例
- java - 从 Java 中的 HTML http 响应中读取参数值
- python - 字典到数据框存在/不存在
- imap - Imap Error 与服务器的连接错误