我是Angular开发的新手,我肯定会错误地使用它 . 我所看到的是Angular重新渲染在预期时没有发生,并且正在被其他事件触发 .

当我开始在页面上构建组件时,它按预期工作,但在某个地方,重新渲染部分变得不稳定 .

这里有些例子 . 这些都在同一个SPA(单页应用程序)上(1)我有一个mat-table,它使用graphql从后端获取数据 . 表格正确加载 . 但在渲染时(使用表的 cdkObserveContent 属性绑定),代码以编程方式选择表中的第一行,并在页面中的另一个伴随组件中显示详细信息 . 第一行的选择最初用于正常工作,但在 dev 进程的某个地方它停止工作 . 如果用户将鼠标悬停在表头上,则第一行将突然被选中,并且伴随组件中的详细信息将正确突出显示 .

几乎看起来Angular没有自动重新渲染它,并且需要在列 Headers 上重新渲染鼠标悬停事件 . 我最终在cdkObserveContent处理程序的末尾添加了一个ChangeDetectorRef.detectChanges()调用,以使其正常工作 . (2)在(1)的配套组件中,我有可变数量的扩展面板 .

这些在最初扩展和折叠方面工作得很好,但是随着开发过程的演变,它们显示出与(1)相同的行为 . 单击扩展面板 Headers 将不再导致它们展开或折叠 . 在应用程序中的其他位置单击后,将导致先前单击扩展标头,以扩展/折叠面板 . 即使打开/关闭开发控制台选项卡(Ctrl-Shift-I)也会导致重新渲染 . 没有别的,因为我会等待多久 . 将ChangeDetectorRef.detectChanges()调用到扩展问题的单击处理程序也解决了这个问题 . 不知道怎么样或为什么,但确实如此 .

(3)目前我正在处理这个我尚未解决的问题 . 在(2)中的配套组件中,我有一个按钮来启动mat对话框 . 再次,通过开发过程,它工作得很好 . 准系统对话框将按预期启动和关闭 . 但是现在我接近完整功能,对话框不会通过提交和/或关闭按钮关闭 .

我需要调用(Ctrl-Shift I)开发控制台选项卡以关闭对话框 . 我还没有想出一个程序化的方法来做到这一点 . ChangeDetectorRef似乎无法解决此问题 .

不太清楚在这里发布什么代码 . 希望有人以前经历过这个,并且知道一个或两个简单的设置,我需要直接设置 .

任何帮助深表感谢 .