【问题标题】:how change a style of ngx datatable column on scroll?如何在滚动时更改 ngx 数据表列的样式?
【发布时间】:2021-10-27 23:48:18
【问题描述】:

我想在滚动时向frozenLeft ngx 数据表列添加特定样式。到目前为止,我已经实现了在滚动时触发函数调用并将标志设置为 true 以指示应该应用样式。

onScroll(event){
    if(event.offsetX > 0){
        this.flag=true;
    }
}

但是,在 ng-datatable 列中,[ngClass]="{'custom-style': flag}" 不起作用(类未附加到元素)。 还尝试了[cellClass] 我无法弄清楚如何在滚动时使用[cellClass]="getClass" 来触发更改。

感谢您的帮助。

【问题讨论】:

    标签: javascript css angular typescript ngx-datatable


    【解决方案1】:

    您可以在ngClass 中使用条件并应用基于它的类:

    <div [ngClass]="flag ? 'applyStyle' : 'noStyle'"> </div>
    

    如果这不起作用,则视图封装可能存在问题。您需要将其删除。您应该检查this 线程,它通过简单的步骤解释了如何做到这一点。

    另外,请确保您的更改检测策略设置为默认值,或者如果是 OnPush 则进行更改检测,这将更新视图属性。

    【讨论】:

    • ViewEncapsulation.none[ngClass]="{'custom-style': flag}" 发挥了作用,但我所有其他样式都消失了,我认为它期待来自全球 style.(s)css 的样式。没有ViewEncapsulation.none 我可以使用[cellClass] 但它在滚动时不是动态的。理想情况下,我需要[cellClass]="{'custom-style': flag}" 之类的东西。我无法将我的样式移动到全局 css 文件。
    • 嘿,没有ViewEncapsulation.none 也能正常工作。只需要使用像[cellClass]="flag ? 'custom-style' : 'none'" 这样的三元语法。您能否编辑您的答案并将[ngClass] 替换为[cellClass],以便我接受答案。谢谢
    • 是的,后面的只是给你一个想法,如果事情不适用于三元。你只需要使用三元就可以了。很高兴它的工作。
    • 您可以将其标记为已接受其他用户。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 2022-08-19
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多