带有子菜单的角度材质侧导航在滚动条可见时无法正确推送



我正在使用角度材质侧导航,我的菜单有一个子菜单。 当我打开子菜单时,会出现一个滚动条,使侧导航略大,它涵盖了一些主要内容。

查看此堆栈闪电战 https://stackblitz.com/edit/angular-raedvz,展开子菜单,您将看到行为。

默认情况下,Angular 材质只会在 nav.open、window.resize 或导航模式更改时调整容器的大小。您要么必须自己触发容器的大小调整,要么可以使用内置选项autosize。但是他们告诉您使用它的风险由您自己承担,因为它可能会导致性能问题。

<mat-sidenav-container class="example-container" *ngIf="shouldRun" autosize>堆栈闪电战示例:https://angular-wsvjf8.stackblitz.io

我测试的是您在提供的示例中,它确实对我有用。如果您遇到性能问题,因为您的应用程序所做的不仅仅是示例(显然(,您可能必须在toggleMenu方法上触发自己调整大小。

https://material.angular.io/components/sidenav/overview#resizing-an-open-sidenav


更新您的评论:

我不确定这是否是正确的方法。 基于我在autosize选项的代码中可以找到的内容。他们所做的是检查每个更改检测周期的边距,这就是为什么使用autosize选项可能会导致性能问题的原因。 之后,他们调用私有函数_updateContentMargins并更正容器的边距。

您可以使用ViewChild并访问 MatSidenavContainer 并在您的toggleMenu中调用该函数。但由于_updateContentMargins函数本身是私有的,所以我不会使用它。 就个人而言,我想不出另一种方法可以做到这一点。

以下是在toggleMenu中调用_updateContentMargins的工作示例 https://stackblitz.com/edit/angular-segnwt:

我在这里使用setTimeout因为 MatSidenavContainer 的_ngZone现在也是私有的。

添加autosize属性应该可以解决您的问题。尽管这似乎对性能有影响。

看看这个 github 问题:https://github.com/angular/material2/issues/9601

相关内容

  • 没有找到相关文章

最新更新