角度重新渲染和changeDetector

时间:2018-08-16 02:24:12

标签: angular

我是Angular开发的新手,一定会使用不正确。我看到的是,Angular重新渲染并没有在预期的时候发生,而是由其他事件触发的。

当我开始在页面上构建组件时,它可以按预期工作,但是在线下某个地方,重新渲染的部分变得片状。

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

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

这些在最初的扩展和折叠方面表现良好,但是随着开发过程的发展,它们表现出与(1)相同的行为。单击扩展面板标题将不再使它们扩展或折叠。在应用程序中的其他位置单击鼠标后,将导致之前单击扩展标题,以展开/折叠面板。即使打开/关闭“ Dev控制台”选项卡(Ctrl-Shift-I),也会导致重新渲染。没什么,我会等多久。对于扩展问题,将ChangeDetectorRef.detectChanges()调用到单击处理程序也解决了此问题。不知道如何或为什么,但是确实如此。

(3)当前,我正在处理尚未解决的问题。在(2)中的伴随组件中,我有一个按钮来启动mat-dialog。同样,在开发过程中,它运行良好。准系统对话框将启动并关闭按预期的方式。但是,既然我已经接近全部功能,则对话框不会通过“提交”和/或“关闭”按钮关闭。

我需要调用(Ctrl-Shift I)Dev控制台选项卡以关闭对话框。我还没有找到一种编程的方式来做到这一点。 ChangeDetectorRef似乎无法解决此问题。

不太确定要在此处发布什么代码。希望有人曾经经历过这种情况,并且知道我需要直接设置的一两个简单设置。

非常感谢您的帮助。

0 个答案:

没有答案
相关问题