javascript - 默认 View 封装在 Angular 中是如何工作的

标签 javascript angular

众所周知,angular应用中组件的默认 View 封装是Emulated的,即

encapsulation: ViewEncapsulation.Emulated

如果它不是 shadow dom,我真的不明白它是如何工作的。

最佳答案

angular中的三种封装

  • ViewEncapsulation.Emulated,这是默认设置
  • ViewEncapsulation.None
  • ViewEncapsulation.Native

模拟模式

假设您有两个不同的组件 comp-first 和 comp-second ,例如您在这两个组件中定义

<p> Some paragraph </p>

因此,如果您在 comp-first.css 中为段落应用一些样式

p { 
   color: blue; 
 }

然后检查 comp-first.html 上的 p 元素并查找其样式会发现类似这样的内容

p[_ngcontent-ejo-1] {
  color: blue;
}

“_ngcontent-ejo-1”只是一个简单的键,用于将此类元素与其他组件元素区分开来

无模式

如果您将此模式应用于这样的组件,例如 comp-first 然后您去检查任何元素,它不会向任何元素提供任何属性,如“_ngcontent-ejo-1”,因此应用任何样式或类将在全局范围内提供。

原生模式

这应该会产生与使用模拟模式相同的结果,但它在支持它的浏览器中附带了 Shadow DOM 技术

关于javascript - 默认 View 封装在 Angular 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494838/

相关文章:

angular - ng serve --prod 抛出 "ERROR TypeError: (void 0) is not a function"

javascript - 仅使用客户端在两个 HTML 页面之间传递大量数据

javascript - vue-good-table 行上是否有右键单击事件以显示上下文菜单?

如果数据已经使用 PHP 进行了清理,javascript XSS 清理

javascript - 确定对象何时准备就绪。我应该使用事件吗?

angular - 在 Angular 2 中打破 NgFor 循环

javascript - 滚动时背景图像变化

angular - NPM 脚本 Webpack --json : JavaScript heap out of memory

android - native ionic 2 地理定位不适用于 Android 设备

javascript - 隐藏在 Angular2 中不起作用