【问题标题】:Set Angular HostBinding css class to value with function?使用函数将Angular HostBinding css类设置为值?
【发布时间】:2018-04-17 16:55:33
【问题描述】:

我有一个使用@HostBinding 设置类的组件:

@HostBinding('class.dark-1') true;

效果很好。但是,现在我需要在我的组件中创建一个函数来动态更改类。

例如,当单击组件中的按钮时,从dark-1light-2

我知道如何创建函数并从按钮调用它,但是如何更改主机绑定中的类并使用新类刷新 UI?

【问题讨论】:

    标签: css angular angular2-hostbinding


    【解决方案1】:

    您可以在单击按钮时切换clicked 标志,并使用getter 设置类:

    @HostBinding("class.dark-1") public get classDark1() {
        return !this.clicked;
    }
    
    @HostBinding("class.light-2") public get classLight2() {
        return this.clicked;
    }
    
    private clicked = false;
    
    public onClick() {
        this.clicked = true;
    }
    

    【讨论】:

      【解决方案2】:

      简单地给它一个属性名称:

      @HostBinding('class.dark-1') isDark = true;
      

      然后你可以改变它:

      this.isDark = false;
      

      或者更改整个类名:

      @HostBinding('class') className = 'dark-1';
      
      this.className = 'light-1';
      

      【讨论】:

      • 你能对可能包含值的属性做类似的事情吗?
      • 对于任何属性,您都可以做到@HostBinding('attr.data-my-attribute') myDataAttr = 'value'; 话虽如此,我不知道您为什么要使用 Angular 来执行此操作。 :) 也许如果你正在制作一个要在 Angular 应用程序之外使用的 Web 组件,那么是的,否则我认为没有理由......
      猜你喜欢
      • 2019-08-02
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多