Вам нужно отключить прокрутку в sidenav и включить только прокручиваемый контент, который есть все, кроме панели инструментов (все ваши h4s).Для этого добавьте DIV вокруг прокручиваемого содержимого под панелью инструментов и примените стиль, чтобы зафиксировать высоту панели инструментов и позволить прокручиваемому разделу заполнить оставшееся пространство внутри flexbox.
<mat-toolbar style="flex: 0 0 128px;">HELLO</mat-toolbar>
<div style="overflow-y: auto;">
<!- menu content -->
</div>
Также добавьтенекоторый стиль для контейнера содержимого меню, чтобы отключить вертикальную прокрутку и обеспечить макет flexbox для содержимого меню.
.no-v-scroll {
height: 100%;
overflow-y: hidden;
display: flex;
flex-direction: column;
}
В Angular Material v6 вы можете применить этот стиль непосредственно к mat-sidenav
:
<mat-sidenav class="no-v-scroll" style="width: 320px;">
<mat-toolbar style="flex: 0 0 128px;">HELLO</mat-toolbar>
<div style="overflow-y: auto;">
<!- menu content -->
</div>
</mat-sidenav>
Но в v7 необходим дополнительный DIV для содержимого меню (панель инструментов плюс прокрутка):
<mat-sidenav style="width: 320px;">
<div class="no-v-scroll">
<mat-toolbar style="flex: 0 0 128px;">HELLO</mat-toolbar>
<div style="overflow-y: auto;">
<!- menu content -->
</div>
</div>
</mat-sidenav>
Как уже упоминалось в ответе ОП, вы также можете переопределить класс mat-drawer-inner-container
, если не хотите добавлять этот дополнительный DIV.
Вот модифицированный код ОПдля v6 в StackBlitz .
Вот модифицированный код ОП для v7 в StackBlitz .