已经有an answered question可以解释ViewEncapsulation.Emulated
,ViewEncapsulation.Native
和ViewEncapsulation.None
之间的区别。
假设有一个Electron应用程序可以保证与Chromium版本 bundle 在一起,而Chromium版本本机支持影子DOM和ViewEncapsulation.Native
。这种情况如何从本机封装中受益以避免仿真开销?
另一种可能的情况是在Angular 2应用程序中调试 View ,由于ViewEncapsulation.Emulated
,该 View 因助手属性和命名空间CSS类而非常困惑。
是否可以将所有未指定ViewEncapsulation.Native
的组件的默认封装全局更改为encapsulation
?ViewEncapsulation.Native
的其他实用工具是什么?
最佳答案
根据https://github.com/angular/angular/pull/7883这应该工作
import {CompilerConfig} from '@angular/compiler';
bootstrap(AppComponent, [{
provide: CompilerConfig,
useValue: new CompilerConfig({defaultEncapsulation: ViewEncapsulation.Native})
}])
我自己还没有尝试过。
我猜想
ViewEncapsulation.Native
在仅针对Chrome的情况下将是最有利的。在其他浏览器释放对影子DOM的支持之前,似乎还需要花费一些时间。主要好处是Angular2无需向每个组件元素添加属性,并且不再需要将所有组件样式都添加到
<head>
中。使用脱机模板编译器时,在大多数情况下,对于
Emulated
,性能并不是什么大问题。关于javascript - Angular 2 native View 封装,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38255385/