我有一个Angular V19.0应用程序,Primeng Toast和确认服务存在问题。我已经在app.module.ts
中导入的核心模块中提供了服务但是,每当我注入这些服务时,我每次点击都会获得2个对话框或敬酒。另外,第一次点击未显示敬酒或确认对话框。
如果没有提供key
属性,吐司组件也不起作用。
-----------------------HTML----------
<ng-container *ngIf="toastMessageKey | async as tKey">
<p-toast position="top-left" baseZIndex="999999" [key]="tKey" life="100000"/>
</ng-container>
------------------------TS-----------
this.toastMessageKey = this.messageService.messageObserver.pipe(
filter((x) => x !== null && x !== undefined),
map((t) => (<ToastMessageOptions>t).key ?? 'toast'),
);
没有上面的代码,吐司消息甚至没有显示自我。 而且我什至尝试将代码复制到另一个具有相同结构(懒惰的模块等)的项目
它的工作就像一个魅力。
我不知道我在哪里犯了一个错误。我为此砸了头。它根本没有给我任何错误或任何错误。但是我发现的只是每次呼叫两次触发确认或吐司观察者。------Layout service---
openToast(toast: ToastMessageOptions) {
this.toastService.add(toast);
}
问题可能是由于SSR的打开,它在服务器上打开一次,并且在浏览器上一次打开,解决方案是将逻辑包装在延期块中,以便仅在浏览器上执行。
@defer() {
<ng-container *ngIf="toastMessageKey | async as tKey">
<p-toast position="top-left" baseZIndex="999999" [key]="tKey" life="100000"/>
</ng-container>
}