#19473·primeng

DynamicDialog 自定义模板引起对话框的再油漆

作者: bernhardsmartpoint创建于 2026年3月11日更新于 2026年9月8日
标签Type: BugResolution: Stale

□ 描述错误

DynamicDialog 使用自定义内容模板时执行无意再油漆

□再现者.

(https://stackblitz.com/edit/GitHub-fpcqwxcz) (中文(简体) ).

□ 实际

** 当使用自定义内容模板时,输入动画点火了秒**和所描述的任何情景。 这种再油漆导致了对话中奇怪的闪烁行为. 通过在口罩元件上观察 " p-overlay-mask-enter-活性 " 两次/多次复制。

** 重新油漆可由三种情况触发:**

  1. ** 没有任何互动** - 复漆在对话框打开后不久自动发生, 没有任何鼠标交互
  2. 在对话中点击- 如果再油漆还没有发生,点击对话框内容内的任何地方触发它
  3. ** 点击关闭按钮** - 如果重新油漆还没有发生,点击 QQ 关闭按钮触发它

** 说明:** 此错误在使用默认内容模板( 没有“ templates” 选项)时发生 ** not ** 。

□可能的根本原因(观察)

根据对代码的分析,似乎存在一个问题,即** might** 可能造成`放弃任务'的虚假-真实循环:

** 意见1:dialog.close()' 设置可见'直接** (`dialog.ts'):

2zz
//目前执行情况
关闭( 事件 ) {
此. 可见 = 假; // 设置内部状态
3⁄4 ̄ ̧漯B
事件。 预防
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

** 意见2:DynamicDialog.on Visible Change ()' 从未设置 ' This. visible = false' (dialog.ts'):

//目前执行情况
关于可视变化( 可见:布尔) {
如果 (! 可见){
ưμ㼯A 可见=虚假
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

** 可能出现的问题流量:**

关闭( ) 调用
^ 可见变化(假相) ^ 动态数字化. 可视变化()
+ 对话框 Ref. Close () → 动态Dialog. close () → CD. mark ForCheck ()
□ 在Leave()之后: mapermask.set(假), 在Hide.emit()
^ 在DialogHide()上 ^ 对话框 Ref.dstroy() ^ cd.markForCheck()
• CD重新评价[可见 =“可见”
~ Dynamic Dialog. 可能还是真实的 ~ 永远不设假 ~
^ 对话框. 可见设置器:  可见=真,相遮=假
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}把Mask.set(真)弄虚作假 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}重新来过?
动画可能会再次被点燃

QPull Request 链接

无回复( N)

未提交公关的理由

  • 缺乏时间
  • [ 不确定如何执行固定/特性
  • [ 难以理解代码库
  • 其它

其他原因:

我一找到使用自定义模板的动态对话框的原始执行中的确切问题,就会加入一个 Pull Request。

• 复制人

https://stackblintz.com/edit/GitHub-fpcqwxcz (中文(简体) ).

环境

** 总理版本:** 21.x ** 角度:** 21.x

没有 . . . . . . .

内容来源: primefaces/primeng