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();
  }