Разница между: host :: ng-deep .class и .class: host :: ng-deep?

В чем разница между двумя нижеприведенными в scss, Приведите несколько примеров во фрагменте.

:host::ng-deep .content-body {
...
}

а также

.content-body :host::ng-deep {
...
}
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
11
0
16 862
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, :host и ::ng-deep - это конструкции Angular, не имеющие ничего общего с SASS.

Теперь предположим, что у вас есть компонент с именем «blog», определенный в Angular, и blog.component.scss - это то место, где вы определяете для него SASS. Потом,

ДЕЛО 1 :

:host::ng-deep .content-body {
...
}

применит стиль, определенный к любому элементу с классом .content-body внутри области компонента. Например:

<div>
  <blog>
    <div class = "content-body"></div>
    <div class = "some-extra-content">
      <div class = "content-body"></div>
    </div>
  </blog>
</div>

В приведенном выше случае стиль будет применен к обоим class = "content-body"div.

СЛУЧАЙ 2:

.content-body :host::ng-deep {
...
}

применит стиль, определенный только к экземплярам компонентов, которые определены внутри элемента с class = "content-body"
Например:

<blog></blog> <!-- Style won't be applied here -->
<div class = "content-body">
  <blog></blog> <!-- Style will be applied here -->
</div>

Вы можете проверьте StackBlitz здесь. В примере StackBlitz color:red применяется из-за ДЕЛО 1 внутри app.component.css, а color:yellow применяется только к одному из компонентов hello из-за СЛУЧАЙ 2.
Не стесняйтесь раскошелиться на Stackblitz и поиграть.

ПРИМЕЧАНИЕ : Если вы еще не знаете, комбинатор прокалывания тени ::ng-deepустарел

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