0

我想在打印之前更新我的模板。所以我使用了这个事件:@HostListener("window:beforeprint", ["$event"])

但是模板更新太晚了;关闭打印窗口后。

我已经尝试过这个matchMedia活动,但同样如此。我也尝试使用NgZone但没有成功。

你可以在这里测试:https ://stackblitz.com/edit/angular-window-before-print-event

/!\ Stackblitz 控制台不正确。您需要打开 DevTool 控制台才能在正确的时间看到正确的消息

你有什么建议吗?谢谢你的帮助 !

4

1 回答 1

0

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();
  }
于 2020-12-31T10:08:50.697 回答