如何在Angular的ViewCapsulation.ShadowDom模式下使用:: slotted?

时间:2019-07-04 06:58:44

标签: css angular shadow-dom

我添加了default组合器,用于引用组件中的内容投影元素。但是,当我从默认(::ng-deep)切换到ViewEncapsulation.Emulated模式时,显然ViewEncapsulation.ShadowDom不是本机的Shadow DOM选择器,旧的CSS无法正常工作。

::ng-deep

令人惊讶的是,当我使用/* This works in ViewEncapsulation.Emulated */ :host ::ng-deep .course-description { max-width: 360px; margin: 0 auto; margin-top: 15px; user-select: none; } 组合器(在Chrome v63 https://developers.google.com/web/updates/2017/10/remove-shadow-piercing中已删除)在Chrome v75.0.3770.100中的/deep/正常工作时

ViewEncapsulation.ShadowDom

能否在组件CSS内使用/* This works in ViewEncapsulation.ShadowDom */ :host /deep/ .course-description { max-width: 360px; margin: 0 auto; margin-top: 15px; user-select: none; } 使其像以前一样工作,但以::slotted()模式工作?如果是,怎么办?

1 个答案:

答案 0 :(得分:1)

您不走运。 .emulated不支持:: slotted。但是它得到了支持。原生

ng-deep也已弃用,并且afaik,尚无计划的替代品。

  

不推荐使用穿刺后代组合器,并且支持   从主要的浏览器和工具中删除。因此,我们计划放弃   支持Angular(适用于/ deep /,>>>和:: ng-deep的全部3种)。

我仍然不确定,他们是在研究解决方案还是只是想让我们忘记它。