javascript - Angular 5:控制台和模板之间的区别
问题描述
在打印页面时,我试图在ngIf指令的帮助下隐藏两列。
当我按下打印按钮时,我将布尔变量' print '的值切换为 true,然后执行转换为 PDF 的函数。
<div class="portlet light">
<button class="btn btn-danger noprint pull-right" style="margin-bottom: -30px; " (click)="print_table()"> <i class="fa fa-print"></i> Imprimer</button>
{{print}}
</div>
转换为PDF的功能:
convertToPdf() {
const element = document.getElementById('contentToConvert');
const opt = {
margin: 0.2,
filename: 'myfile.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2, width: 1282 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'landscape' }
};
// New Promise-based usage:
html2pdf().from(element).set(opt).save();
}
问题是即使控制台中的值发生了变化,模板中也没有。
print_table() {
this.print = true;
setTimeout(this.convertToPdf, 2000);
setTimeout(this.toFalse, 5000);
}
toFalse() {
this.print = false;
console.log(this.print);
}
结果:
value 的值'print'
仅更改一次,因此在 print 函数知道我调用toFalse()
函数来显示它们之后列保持隐藏。
解决方案
this
intoFalse
将是窗口对象,如果您将其引用传递给setTimeout
因为setTimeout
并setInterval
在全局范围内运行。
在您的函数中,直接在匿名函数的引用内print_table()
调用函数,而不是传递它的引用,即:toFalse()
print_table() {
this.print = true;
setTimeout(this.convertToPdf, 2000);
setTimeout(()=>{this.toFalse()}, 5000);
}
推荐阅读
- php - CSS中的PHP变量:未定义的变量
- nginx - flask oidc auth 回调重定向到 http 而不是 https
- javascript - Fullcalendar 3 - 在 Select 函数上获取当前实例
- serverless-framework - 在无服务器框架中,有没有办法在 lambda 运行时更新由 ssm 变量填充的环境变量?
- python - 如何在 POST 上使多线程字段的序列化程序类为空
- c# - .NET Core Web API 处理已发送响应后的异常
- javascript - Django - 如何拨打电话号码并一键打开表单页面?
- sql - 将数据格式从行更改为列
- c# - 在申请期间注册 CultureInfo
- javascript - javascript中el.classList.remove的时间复杂度是多少