Как сохранить панель инструментов всегда сверху, пока cdk-virtual-scroll-viewport заполняет остальную высоту?

#css #angular #angular-material2

#css #угловой #angular-material2

Вопрос:

У меня есть страница, которая содержит mat-toolbar и cdk-virtual-scroll-viewport . Я хочу mat-toolbar всегда оставаться в верхней части экрана, в то время как cdk-virtual-scroll-viewport заполняет остальную часть экрана.

Я попытался установить высоту cdk-virtual-scroll-viewport на 100vh , однако, когда я дохожу до конца списка, панель инструментов исчезает.

Вот пример кода, который я подготовил:https://stackblitz.com/edit/angular-lbxmce

Как вы можете видеть, как только мы прокрутили до конца нижней части, нам нужно прокрутить назад до первого элемента, чтобы панель инструментов снова появилась. Как я могу исправить положение панели инструментов, сохраняя список заполняющим остальную часть экрана?

Спасибо.

Ответ №1:

Лучшая практика — реализовать макет для вашей страницы и добавить mat-toolbar в макет.

Это пример:

 ...

const routes: Routes = [
 {
   path: 'test',
   component: TestLayoutComponent,
   children: [
     { path: '', component: TestComponent },
   ]
 }
];

@NgModule({
 imports: [RouterModule.forChild(routes)],
 exports: [RouterModule]
})
export class TestRoutingModule { }
  

Подробнее

Комментарии:

1. Кроме того, убедитесь, что вы прочитали комментарий от Александра Карлса в посте о том, как повторно использовать общие макеты в Angular с помощью маршрутизатора

2. Потому что в моем приложении сейчас только одна страница, поэтому я не думал о повторном использовании макета. В любом случае, спасибо за вашу информацию. Однако cdk-virtual-scroll-viewport нужна высота, какой должна быть высота cdk-virtual-scroll-viewport после того, как я реализую макет?

3. высота: calc (100vh — 64px);

Ответ №2:

Вам нужно знать высоту панели инструментов, тогда вы сможете рассчитать высоту окна просмотра:

 .example-viewport {
  height: calc(100vh - 64px);
  margin: 4px;
}
  

введите описание изображения здесь