【问题标题】:Change color on click with switch用开关点击改变颜色
【发布时间】:2017-09-14 21:07:14
【问题描述】:

我有一些标签(ID、ID 后开始、车辆名称...等)我想在选中时更改颜色(类似于“活动”标签)。

问题是在每个标签旁边我都有“排序”图标,当排序是按顺序(白色)或反向(红色)时,该图标会改变它的颜色。

我想要的是更改标签文本的颜色,以便用户可以知道在那一刻什么元素处于活动状态,无论该排序是按顺序还是反向。

我该怎么做? ngClass,ngStyle有什么办法吗?我正在使用 Angular 2

用于标签、排序图像等的 HTML 代码

<div class="vessel-label-div">
        <div class="field-width8">
            <label class="label-style">ID</label>
            <div (click)="showSelected1()">
                <span *ngIf="!selected1"><div class="sort-image-div" (click)="sortByIdUp()"><img src="/images/sort1.png" style="width: 98%;"></div></span>
                <span *ngIf="selected1"><div class="sort-image-div" (click)="sortByIdDown()"><img src="/images/sort2b.png" style="width: 98%;"></div></span>
            </div>
        </div>
        <div class="field-width9">
            <label class="label-style">Start after ID</label>
            <div (click)="showSelected2()">
                <span *ngIf="!selected2"><div class="sort-image-div" (click)="sortByAfterIdUp()"><img src="/images/sort1.png" style="width: 98%;"></div></span>
                <span *ngIf="selected2"><div class="sort-image-div" (click)="sortByAfterIdDown()"><img src="/images/sort2b.png" style="width: 98%;"></div></span>
            </div>
        </div>
        <div class="field-width16">
            <label class="label-style">Vessel name</label>
            <div (click)="showSelected3()">
                <span *ngIf="!selected3"><div class="sort-image-div" (click)="sortByNameUp()"><img src="/images/sort1.png" style="width: 98%;"></div></span>
                <span *ngIf="selected3"><div class="sort-image-div" (click)="sortByNameDown()"><img src="/images/sort2b.png" style="width: 98%;"></div></span>
            </div>
        </div>

【问题讨论】:

    标签: angular colors switch-statement ng-style


    【解决方案1】:

    在你的 CSS 中定义两个类,例如

    .white {
         color: white;
    }
    .red {
        color: red;
    }
    

    在你的 ts 中:

    selectedLabel: string = ' ';
    

    点击更新:

    <div class="field-width8"> 
        <label class="vessel-label-style" [ngClass]={'red': selectedLabel === 'ID' }">ID</label>
        <div (click)="showSelected1()"> 
        <span *ngIf="!selected1"><div class="sort-image-div" (click)="sortByIdUp(); selectedLabel='ID';"><img src="/images/sort1.png" style="width: 98%;"></div></span> 
        <span *ngIf="selected1"><div class="sort-image-div" (click)="sortByIdDown(); selectedLabel=' ';"><img src="/images/sort2b.png" style="width: 98%;"></div></span> 
        </div> 
    </div>
    

    【讨论】:

    • 它适用于在标签上切换颜色,但是当我想点击其他标签按该标准排序时,颜色仍然停留在我之前排序的标签上......有没有办法改变当时刚刚选择的标签(比如红色)上的颜色,而所有其他标签都是默认的(白色)?谢谢
    • 在你的类中定义一个变量,并用它来切换颜色。我会更新我的答案
    • 它仍然会影响我的 img 更改 (selected1) ...我现在可以在单击标签时切换红色,但是当我再次单击排序图标时我也可以删除红色...可以只要我在该标签上使用排序,它就会保持红色标签(无论我多次点击排序图标),如果我选择其他标签,它只会改变标签颜色:)
    • 找到了一个解决方案...当我将两个字段都设置为 selectedLabel='ID';" 而不是其他的空字符串,它会保持红色,我是否多次单击它。感谢您的解决方案
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2020-07-29
    相关资源
    最近更新 更多