Угловой материал: закусочная спрятана за компонентом с высоким z-индексом

Итак, я немного поигрался с Angular и хотел добавить в свое приложение закусочную материала на случай ошибки в моем приложении.

Итак, у меня есть домашняя страница, и моя навигация представляет собой оверлей с z-индексом 3000. В навигации есть возможность войти в систему (см. Рисунок ниже). Я ввел неверные данные журнала специально, чтобы запустить обработчик ошибок и отобразить панель закусок.

Закусочная действительно появляется. Однако он скрыт за навигацией. Как сделать так, чтобы он отображался над навигацией? Я попытался добавить z-index 10000 в scss компонента, который обрабатывает снэк-бар, с помощью следующего кода:

* {
z-index: 10000;
}

и

::root {
z-index: 10000;
}

Но ничего не вышло. Кто-нибудь знает как это сделать?

App.component.ts: пользовательская навигация - это то место, где я обрабатываю вход в систему. Уведомления содержат логику для закусочной

<navigation></navigation>
<user-navigation>

</user-navigation>
<router-outlet></router-outlet>
<notifications></notifications>

Notifications.component.ts, это работает, он открывает снэк-бар, но он скрыт за пользовательской навигацией

import { Component, OnInit } from '@angular/core';
import {MatSnackBar} from '@angular/material';
import {NotificationService} from '../services/notification.service';

@Component({
  selector: 'notifications',
  templateUrl: './notifications.component.html',
  styleUrls: ['./notifications.component.css']
})
export class NotificationsComponent implements OnInit {

  constructor(public snackBar: MatSnackBar, private notificationService: NotificationService) { }

  ngOnInit() {
    this.notificationService.notification$
        .subscribe((message) => {
          console.info('received the notification', message);
          this.openSnackBar(message);
        });
  }

  openSnackBar(message: string, action?: string) {
    setTimeout(() => {
      this.snackBar.open(message, action, {
        duration: 20000
      });
    }, 0);
  }
}

Это страница входа в систему. Домашняя страница находится за этим и не видна из-за высокого z-индекса, который я дал навигации.

Угловой материал: закусочная спрятана за компонентом с высоким z-индексом

Это домашняя страница, когда я закрываю навигацию. Панель закусок видна, но я хочу, чтобы она была видна и с открытой навигацией.

Угловой материал: закусочная спрятана за компонентом с высоким z-индексом

думаю, вы можете попробовать использовать ng deep, он давно устарел, но еще не снят

Rahul Singh 01.09.2018 15:37
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
1
5 560
8

Ответы 8

вы можете попробовать переопределить этот класс css

style.css / style.scss

.cdk-overlay-pane{
  z-index: 10000 !important;
}

Пробовал, но все равно не видно. По-прежнему скрыт за навигацией.

tilly 01.09.2018 15:28

вы добавили класс css в style.css?

Krishna Rathore 01.09.2018 15:38

Я добавил указанный выше класс в style.css (основной файл css)

tilly 01.09.2018 15:43

ну, на самом деле styles.css. У меня нет файла style.css.

tilly 01.09.2018 15:44

нельзя просто поставить элемент <notifications> сверху?

<notifications></notifications>
<navigation></navigation>
<user-navigation></user-navigation>
<router-outlet></router-outlet>

Ничего не менял.

tilly 01.09.2018 15:55

Может быть, простая репликация на Stackblitz? Немного сложно представить себе стопку страниц входа в систему поверх домашней. Возможно, это не связано с вашей проблемой, но похоже, что дизайн немного не такой. IMHO, неавторизованный пользователь должен быть перенаправлен на его собственную страницу входа в систему вместо того, чтобы создавать другой слой поверх домашней страницы.

dK- 01.09.2018 16:00

Попробуйте поместить это в свой базовый / корневой файл css, если у вас его нет, попробуйте добавить теги в свой файл index.html и добавьте этот CSS туда.

 :host /deep/ .cdk-overlay-pane{
   z-index: 1000;
 }

Я была такая же проблема. Я решил уменьшить z-индекс нижнего колонтитула вместо увеличения закусочного.

С Уважением M

(Угловой 8) Помещение этого в style.css у меня отлично сработало:

.cdk-overlay-container {
    position: fixed;
    z-index: 10000;
}

Это сработало для меня:

::ng-deep .cdk-overlay-container {
  z-index: 10000 !important;
}

PS: Незначительное изменение ответа MSXman

(Angular 9) Я добавляю следующий код css, чтобы исправить это.

styles.scss

.cdk-overlay-container {
    z-index: 99999999999999; 
}

У меня проблема, потому что при использовании MatSnackBar и MatDialog, поскольку MatSnackBar всегда перекрывался диалогом. С этим решением я получил MatSnackBar с более высоким z-index: https://github.com/angular/components/issues/7471#issuecomment-340856500

Другие вопросы по теме