已经有an answered question可以解释ViewEncapsulation.EmulatedViewEncapsulation.NativeViewEncapsulation.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/

10-11 17:26