首页 > 解决方案 > Angular Material:在高度变化时重新计算 mat-menu 的位置

问题描述

假设我有一个在打开后的片刻mat-menu改变它的(由于数据加载)。height起初它有50px高度,然后它可能有类似的东西200px。如果它的触发器位于窗口的底部,则面板可能会打开到底部(因为初始50px高度有足够的空间),但在加载数据后它仍保留在底部。我想重新计算它的位置并表现得好像它已经关闭并再次打开(在这种情况下,由于底部空间不足,面板在触发器上方打开)。有没有办法做到这一点?

您可以在这个简单的 stackblitz 中对其进行测试:https ://stackblitz.com/edit/angular-lorwfh?file=app/menu-overview-example.ts

标签: angularangular-material

解决方案


由于还没有公开的方法来解决这个问题,我通过发送一个 resize 事件来解决这个问题,以强制菜单在添加/删除新项目后重新计算位置。

window.dispatchEvent(new Event('resize'));

推荐阅读