Содержание контента справа от боковой панели Angular Материал - PullRequest
0 голосов
/ 31 января 2020

РЕДАКТИРОВАТЬ:

Я это исправил. Проблема заключалась в том, что я не мог просто обернуть свой appcomponent в sidenav, а скорее мне нужно было использовать все те же свойства из app-sidenav.component. Поэтому в AppComponent я изменил его на следующее:

<app-header></app-header>

<mat-sidenav-container class="main-sidenav">
  <mat-sidenav [disableClose]="true" autosize class="sidenav" mode="side" opened #sidenav>
    <app-sidenav></app-sidenav>
  </mat-sidenav>

  <mat-sidenav-content>
    <router-outlet></router-outlet>
  </mat-sidenav-content>
</mat-sidenav-container>

Затем я переместил службу sidenav, чтобы она стала частью компонента приложения. Полностью удалив <mat-sidenav>... и <mat-sidenav-content>... из отдельных компонентов и вместо этого поместив их в модуль приложения с точными спецификациями, как и раньше, это сработало.

Если вы не оборачивайте компонент приложения правильными свойствами, Angular попытается изменить свойства полей и сбросит макет.

Оригинальный вопрос:

Я работаю над проект, но я довольно новичок в аспектах Angular, и я просто не могу понять, как это определить. В настоящее время у меня есть приложение с заголовком (панелью инструментов), sidenav и областью основного контента. В заголовке есть кнопка «Переключатель», которая использует сервис для переключения на боковую панель. Это работает, как и ожидалось до сих пор.

Однако проблема, с которой я сталкиваюсь, относится к основной области содержимого, которая должна быть справа от sidenav. Таким образом, когда sidenav открыт, он остается справа, а когда он закрыт, он остается справа. Из того, что я видел до сих пор, мне нужно использовать <mat-sidenav-content>, чтобы сохранить позиционирование этого контента.

В настоящее время в моем app.component.html я использую розетку маршрутизатора, чтобы отображать различное содержимое в основной области содержимого. Вот как это выглядит:

AppComponent

<app-header></app-header>

<mat-sidenav-container class="main-sidenav">
  <app-sidenav></app-sidenav>
  <router-outlet></router-outlet>
</mat-sidenav-container>

App-Sidenav

<mat-sidenav [disableClose]="true" autosize class="sidenav" mode="side" opened #sidenav>
  ...
</mat-sidenav>

И это прекрасно работает с моим заголовком

Заголовок

<mat-toolbar class="header"> 
  <a routerLink="/workouts" href="#" class="logo--link">Logo Goes Here</a>
  <button (click)="toggleSidenav()">toggle sidenav</button>
</mat-toolbar>

Основная область содержимого, которую я стараюсь держать всегда справа от sidenav. В настоящее время я пытаюсь заставить workouts.component работать правильно, чтобы я мог использовать метод для других компонентов. :

WorkoutsComponent

<mat-sidenav-content>
  <h1>Workout list will go here</h1>
</mat-sidenav-content>

Как сделать так, чтобы этот контент оставался справа от боковой панели независимо от того, открыт он или закрыт?

Я пробовал несколько методов, таких как обертывание элементов в appcomponent с <mat-sidenav>... и <mat-sidenav-content>..., но в итоге это привело к поломке моего приложения.

Вот пока мой стек приложения.

Некоторые настройки настроены, и у меня есть пара компонентов, готовых к go, но если даже один может работать, я уверен, что все остальное может быть реализовано без особых проблем

Спасибо, и дайте мне знать, если я смогу ответить на любые вопросы, которые помогут решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...