在我的应用程序中,我需要能够订阅一些事件,这些事件可以在打开或关闭侧面板时通知应用程序。面板的打开和关闭会更改视口的宽度,并且我在视口中运行了一个Monaco编辑器,此面板在切换为打开/关闭状态后需要更新。我的问题是Angular 1.x的经典摘要循环问题,尽管JS模型已正确更新,但该事件在UI进行物理更新之前发生。这意味着操作发生的顺序是:
该顺序的问题是3出现在4之前,因此“更新大小”不起作用,因为它仍然使用与以前相同的大小。
但是,如果我将代码更改为这样:
setTimeout(() => {
this.panelControlSource.next(new PanelOpenEvent());
});
然后突然间它将再次起作用,因为在摘要发生并且UI更新后,我强制触发此事件。这是我们一直在Angular 1.x中使用的一种技巧,目的是了解DOM何时真正更新并且元素更改大小。还是在Angular 2+(我使用Angular 7)中仍然是这样做的唯一方法,还是现在有一种最“ Angular”的方法?