Javascript angular2如何在组件视图中区分光DOM和阴影DOM

Javascript angular2如何在组件视图中区分光DOM和阴影DOM,javascript,angular,Javascript,Angular,我正在阅读关于主机和可见性的文章,其中陈述了以下关于viewProvidersComponentdecorator的元数据属性的内容: 通过viewProviders,我们可以非常明确地告诉DI系统 提供程序可用于哪个子注入器(灯光DOM或阴影) DOM) 我想知道angular2如何区分组件模板中的光DOM和阴影DOM 本文还提到了标记: 如果我们相应地配置Angular,这个DOM树可以是影子DOM。 这也是为什么我们有一个标签。它是有角度的 内容插入点的实现,这是另一个阴影 DOM特性 因

我正在阅读关于主机和可见性的文章,其中陈述了以下关于
viewProviders
Componentdecorator的元数据属性的内容:

通过viewProviders,我们可以非常明确地告诉DI系统 提供程序可用于哪个子注入器(灯光DOM或阴影) DOM)

我想知道angular2如何区分组件模板中的光DOM和阴影DOM

本文还提到了
标记:

如果我们相应地配置Angular,这个DOM树可以是影子DOM。 这也是为什么我们有一个标签。它是有角度的 内容插入点的实现,这是另一个阴影 DOM特性


因此,放入
ng content
中的任何内容都被视为
shadowdom

如果您有一个组件模板,如

@Component({
  selector: 'my-comp',
  template: `
    <div>shadow DOM<div>
    <ng-content></ng-content>
    <div>shadow DOM<div>`, 
    ...  
@组件({
选择器:“我的公司”,
模板:`
阴影DOM
阴影DOM`,
...  
像这样使用它

<my-comp>
  <div>light DOM</div>
</my-comp>

轻DOM
那么它将导致

<my-comp>
  <div>shadow DOM</div>
  <div>light DOM</div>
  <div>shadow DOM<div>
</my-comp>

阴影DOM
轻DOM
阴影DOM
因此,灯光DOM实际上不是组件模板的内容,它只是投影在阴影DOM中预定义位置的子内容


如果使用默认视图封装
Emulate
,则只会模拟阴影DOM。只有使用
Native
它才会在支持它的浏览器上成为真正的阴影DOM。

谢谢,如果使用默认视图封装仿真,则只会模拟阴影DOM。-但是注入器将与
Emulate类似
本机
,对吗?是的,模拟的行为在这里匹配。只有难以模拟的浏览器功能不被模拟(样式被添加到
而不是组件元素,CSS封装受到限制,…)明白了,谢谢,
的想法似乎与
的想法非常相似。它与
元素更为一致,浏览器本身支持阴影DOM