Angular 模板未在 beforePrint 事件中更新
Angular template is not updated on beforePrint event
我想在打印之前更新我的模板。
所以我使用了这个事件:@HostListener("window:beforeprint", ["$event"])
但是模板更新太晚了;关闭打印后 window.
我已经尝试了 matchMedia
事件,但还是一样。
我也尝试使用 NgZone
但没有成功。
你可以在这里测试:https://stackblitz.com/edit/angular-window-before-print-event
/!\ The Stackblitz console is not the right. You need to open the DevTool console to see the right message at the right time
你有什么建议吗?
感谢您的帮助!
如 MDN 所述:
The beforeprint event is fired when the associated document is about to be printed or previewed for printing.
所以它发生在预览启动时,而不是在启动之前。
您可以将逻辑移入 printme()
函数并使用 ChangeDetectorRef 更新您的模板:
constructor(private cdr: ChangeDetectorRef) {}
public printMe(): void {
this.message = "before print triggered ";
this.cdr.detectChanges();
window.print();
}
我想在打印之前更新我的模板。
所以我使用了这个事件:@HostListener("window:beforeprint", ["$event"])
但是模板更新太晚了;关闭打印后 window.
我已经尝试了 matchMedia
事件,但还是一样。
我也尝试使用 NgZone
但没有成功。
你可以在这里测试:https://stackblitz.com/edit/angular-window-before-print-event
/!\ The Stackblitz console is not the right. You need to open the DevTool console to see the right message at the right time
你有什么建议吗? 感谢您的帮助!
如 MDN 所述:
The beforeprint event is fired when the associated document is about to be printed or previewed for printing.
所以它发生在预览启动时,而不是在启动之前。
您可以将逻辑移入 printme()
函数并使用 ChangeDetectorRef 更新您的模板:
constructor(private cdr: ChangeDetectorRef) {}
public printMe(): void {
this.message = "before print triggered ";
this.cdr.detectChanges();
window.print();
}