代码之家  ›  专栏  ›  技术社区  ›  bob.mazzo

将角度[ngClass]与布尔值var一起使用

  •  4
  • bob.mazzo  · 技术社区  · 8 年前

    我有一个Angular 5网站,这个页面有一个过滤器图标栏。我正在尝试应用额外的 filter-selected 一旦用户单击图标,css类-当然,再次单击时将其关闭。

    我正在尝试使用 hostFilter var打开/关闭,但未成功。 是的,我已经在我的组件中初始化了这个var:

      hostFilter = false;
    

    <div class="row">
        <div class="node-selection">  
            <a href="javascript:void(0)" title="Hosts" (click)="hostFilter!=hostFilter; rebuildTrees(1)">
                <i [ngClass]="{                
                    'selected-node square host filter-selected' : hostFilter,
                    'selected-node square host' : true
                    }">
                </i>
            </a>
            <a href="javascript:void(0)" title="Host Access Points" (click)="rebuildTrees(2)"><i class="selected-node square host-access"></i></a>
            <a href="javascript:void(0)" title="Storages" (click)="rebuildTrees(5)"><i class="selected-node circle storage"></i></a>
        </div>    
    </div>

    <style>
    .selected-node.square.host {
            background-color: #40923b;
            border-radius: 5px;
            border: wheat;
            border-style: solid;
            border-width: 1px;        
        }
    .selected-node.square.host.filter-selected {
          box-shadow: 
          0 1px 2px #fff, 
          0 -1px 1px #666,
          inset 0 -1px 1px rgba(0,0,0,0.5), 
          inset 0 1px 1px rgba(255,255,255,0.8);
    }
    </style>

    以下是默认情况下的外观:

    enter image description here

    如果我强迫它出现,它看起来是这样的:

    enter image description here

    非常感谢您的建议。。。


    ***** 更新 ********

    我更新了 (click) 事件代码如下所示。我的逻辑运算符 ! 放错地方了。

    2 回复  |  直到 8 年前
        1
  •  2
  •   joh04667    8 年前

    你的 (click) 锚定标记上的侦听器函数没有执行任何操作。 hostFilter!=hostFilter 永远都是假的;它没有赋值。要切换该值,请执行以下操作:

    (click)="hostFilter = !hostFilter"

    过了这一关,你就可以 [ngClass] 绑定整个对象。只需为元素提供它应该始终拥有的类,并在“Togleable”类上使用类绑定:

    <i class="selected-node square host" [class.filter-selected]="hostFilter"> </i>

        2
  •  2
  •   bc1105    8 年前

    一个简单的解决方案是:

    <i class="selected-node square host" [class.filter-selected]="hostFilter"></i>