angular - :host::ng-deep .class 和 .class :host::ng-deep 之间的区别?

标签 angular sass

scss中下面两个有什么区别, 在片段中给出一些例子。

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

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

最佳答案

首先,:host::ng-deep是 Angular 构造,与 SASS 无关

现在,假设您在 Angular 中定义了一个名为“blog”的组件,并且 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 s 将应用样式。

案例 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>

您可以 check a StackBlitz here .在 StackBlitz 示例中,color:red由于 CASE 1app.component.css 中被应用和 color:yellow仅适用于 hello 之一组件因为CASE 2
随意 fork Stackblitz 并尝试一下。

注意:如果您还不知道,阴影穿刺组合器 ::ng-deep is being deprecated

关于angular - :host::ng-deep .class 和 .class :host::ng-deep 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566274/

相关文章:

html - 如何响应地将页脚保持在底部

sass - Webpack SASS-loader include 语句中断 SASS @import 语句

css - SCSS/SASS 没有映射/编译成 CSS

angular - ng2-smart-table 创建按钮无法正常工作

angular - 如何从应用程序的任何位置打开模态

javascript - Angular 为 2 的输入去抖动

angular - http get 请求返回未定义

angular - Fullcalendar v4 - 资源(作为函数): fetchInfo is null

css - 如何使用具有透明背景的 CSS 切割方框 Angular ?

css - 在 Ionic 3 中的图标上添加徽章