Вам не нужно использовать загрузчик fixed-top
- вам просто нужно разместить заголовок в нужном месте.Для вашего «бокового» режима заголовок должен находиться внутри содержимого sidenav, чтобы он передавался вместе с содержимым.Для режима «over» заголовок должен находиться над и вне sidenav.Вы можете сделать это, используя логику шаблона:
<ng-container *ngIf="!pushed" [ngTemplateOutlet]="appHeader"></ng-container>
<mat-sidenav-container class="theme-sidenav-container" autosize>
<mat-sidenav class="theme-sidenav" #sidenav [mode]="mode" position="end" opened="false" (mouseleave)="pushed? 2+2 :sidenav.toggle()">
...
</mat-sidenav>
<mat-sidenav-content class="theme-main-content">
<ng-container *ngIf="pushed" [ngTemplateOutlet]="appHeader"></ng-container>
<router-outlet></router-outlet>
</mat-sidenav-content>
</mat-sidenav-container>
<ng-template #appHeader>
<app-header (toggleSidenav)="sidenav.toggle()" [menuAvailable]="pushed"></app-header>
</ng-template>
Здесь он находится на StackBlitz .Обратите внимание, что я также удалил класс fixed-top
и определил значения по умолчанию для mode
и pushed
.
Это может быть не совсем то, что вы хотите, но показывает, как динамически изменять позицию заголовка.Возможно, вам потребуется добавить макет в app-sidenav и класс theme-main-content.