В эти дни я работаю над проектом и выбрал ng-zorro в качестве библиотеки компонентов для этой задачи.
Недавно я добавил полноэкранный режим в свое приложение через requestFullscreen API и заметил, что модалы, меню выбора и т.д. отсутствуют в полноэкранном режиме.
При переходе в полноэкранный режим с помощью requestFullscreen браузер покажет только элемент, на котором был вызван метод, и всех его потомков.
Когда мы открываем новый модал или меню выбора, они добавляются в тело документа, и поэтому отсутствуют в полноэкранном режиме.
Они появляются, только если мы входим в полноэкранный режим на всем элементе body.
Существует несколько подходов к модалам, поддерживающим полноэкранный режим:
В итоге я решил проблему в своем проекте с помощью этого решения. ng-zorro использует @angular/cdk за кулисами, который раскрывает нечто под названием FullscreenOverlayContainer.
Простая замена стандартного OverlyContainer на FullscreenOverlyContainer будет обрабатывать полноэкранный режим для вас:
{ provide: OverlayContainer, useClass: FullscreenOverlayContainer,}
Вы не можете запустить полноэкранный режим при просмотре редактора Stackblitz, поэтому попробуйте рабочий пример , а код смотрите здесь .
Это решение больше похоже на обходной путь к решению проблемы, но оно работает.
Я действительно столкнулся с этим в этом ng-zorro вопросе. В основном решение заключается в том, чтобы ввести полноэкранный режим для элемента body, чтобы модалы и всплывающие окна были включены, и использовать css для приведения содержимого, которое вы действительно хотите, чтобы покрыть весь экран.
Смотрите этот рабочий пример из выпуска.
Это решение не поддерживается ng-zorro, но вы можете найти его полезным в будущем.
Некоторые библиотеки поддерживают определение места прикрепления таких модалов, например @ngneat/dialog и мы можем просто прикрепить наше содержимое к элементу fullscreen, передав параметр container:
import { inject } from '@angular/core'; import { DialogService } from '@ngneat/dialog'; inject(DialogService).open(MyDialogComponent, { container: document.fullscreenElement || document.body });
Таким образом, модал находится под полноэкранным элементом и включен в представление.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.