【发布时间】:2020-12-05 18:05:06
【问题描述】:
我有在 Popover/Overlay 中使用的组件。该组件需要根据其宽度和高度进行一些计算。问题是当在 Overlay 中创建的组件尚未附加到 DOM 时,因此所有宽度/高度均为 0。我需要在实际添加到 DOM 时捕获事件。我知道我可以使用 MutationObserver 来跟踪 DOM 突变,但我想看看是否有“更干净”的 Angular 方法。
更新:
详细说明我的组件在<ng-content> 内。因此,它在 DOM 之外创建,并且仅在创建父元素(具有 ng-content 标签)时才投射到 DOM 中。我创建了example。如果您打开控制台,您将看到“在模板中打开”按钮选项卡组件在弹出窗口打开时被初始化。但是对于“自定义触发器”组件(具有 ng-content)选项卡组件初始化为页面加载(此时它尚未附加到 DOM),并且当单击注入 DOM 的按钮选项卡但选项卡组件不知道它时。
【问题讨论】:
-
你可以尝试使用ngAfterViewInit lifecycle hook。
-
问题是组件已创建(调用 ngAfterViewInit)但尚未添加到 DOM。