【问题标题】:Altering the CSS added by an Angular Directive?更改 Angular 指令添加的 CSS?
【发布时间】:2019-09-02 22:46:53
【问题描述】:

我们如何覆盖由 angular 指令创建的 CSS。例如,当我们将添加排序指令添加到材料数据表时,它是creates this problem (It overrides the layout of the column header).

通过 styles.scss 或组件本地 CSS 覆盖 CSS 不起作用,因为该指令添加了具有优先级的内联样式。还尝试将 !important 添加到 CSS 定义覆盖,但不喜欢。

想法?

【问题讨论】:

    标签: javascript html css angular typescript


    【解决方案1】:

    我可以建议一种方法,在组件的 CSS/SCSS 文件中编写自定义 CSS 类,并使用带有 NgClass 指令的条件应用它, 在 onInit 中执行你的条件。

    试试看,希望能成功

    【讨论】:

    • 如果你想这样做,最好在ngAfterViewInit 上执行,但是ngclass 和添加一个类是一回事
    • 是的,最好使用 ngAfterViewInit,但是此时添加一个类或 ngClass 是不一样的。两者都会添加一个类,但我们应该小心何时添加类。如果直接添加一个类,它将被指令的样式覆盖,这就是为什么我们需要在应用所有其他样式后添加一个类
    【解决方案2】:

    如果没有应用类的样式,您可以使用NgStyleAngular Style Binding。最好的方法是使用ngdeep

    如果这仍然不起作用,请将其放在 setTimeoutngAfterViewChecked 上(不推荐)。

    【讨论】:

    • IIUC ngdeep 已弃用。
    • 是的,它已被弃用。
    • 在此之前,::ng-deep 应该是首选,以便与工具更广泛地兼容。
    猜你喜欢
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2019-04-26
    • 1970-01-01
    • 2016-07-12
    • 2013-10-17
    • 2012-12-08
    相关资源
    最近更新 更多