:: ng-deep将被弃用 - 任何替代方案?

Omt*_*guy 28 angular

Doc说:

不推荐使用阴影穿透后代组合器,并且正在从主要浏览器和工具中删除支持.因此,我们计划放弃Angular中的支持(对于/ deep /,>>>和:: ng-deep的所有3个).在此之前:: ng-deep应该是首选,以便与工具更广泛地兼容.

既然我想在不更改代码的情况下升级到新版本,那么什么是弃用方法的替代方案?

Dan*_*pel 23

在仔细研究了委员会会议上关于这些内容的实际说明之后,看起来还没有提出替代方案.使用该语法可确保您让Angular负责打破样式封装(对于模板中子组件中的DOM节点)他们正在为您的样式执行(而不是使用浏览器本机功能,使其更加面向未来).我认为这个说明只是让你知道,只要实际的浏览器机制到位,他们就会计划实施它.我个人不会回避使用它.::ng-deep

在CSS中不使用该运算符的唯一方法是完全选择不让Angular通过这样做来管理组件的样式封装:

import { ViewEncapsulation } from '@angular/core';

@Component({
    ...
    encapsulation: ViewEncapsulation.None
})
Run Code Online (Sandbox Code Playgroud)

如果你这样做,你的风格会变得全局化,所以请确保在每个样式规则前加上你的组件,以确保它们不会泄漏.例如,如果您的MyCustomComponent组件具有选择器my-custom-component:

my-custom-component button { ... } /* good */
button { ... } /* bad */
Run Code Online (Sandbox Code Playgroud)