首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fa图标不随ngClass更改

fa图标不随ngClass更改
EN

Stack Overflow用户
提问于 2018-02-26 08:12:32
回答 6查看 4.6K关注 0票数 2

当用户选择复选框或取消复选框时,我尝试在复选框和取消复选框之间切换。

为此,我使用:

代码语言:javascript
复制
<i class="far" ngClass="isItemSelected(item) ? fa-check-square : fa-square"></i>

isItemSelected(项)返回true或false

但是,即使在ui上,我也看不到复选框图标正在更改,并且从类型记录代码中传递了false值。

有人能帮我吗。

完整代码片段:

角侧:

代码语言:javascript
复制
   <ng-container *ngFor="let item of items;let i = index">
                        <div class="tiles">
                            <li>{{item}}</li>
                            <div class="deviceinfo-check-box" (click)="selectedItem(item)">                         
                              <i class="far" [ngClass]="isItemSelected(item) ? 'fa-check-square' : 'fa-square'"></i>
                            </div>
                        </div>
    </ng-container>

TypeScriptSide:

代码语言:javascript
复制
  selectedItem(item) {
        if (this.selecteditems.indexOf(item) < 0) {
            this.selecteditems.push(item);
        } else {
            this.selecteditems.splice(this.selecteditems.indexOf(item), 1);
        }
    }



    isItemSelected(item) {
        return this.selecteditems.indexOf(item) < 0 ? false : true;
    }

使用{{isItemSelected(IotGateway)}->获得的这些真假值

网址:https://angular-m56o7e.stackblitz.io

EN

回答 6

Stack Overflow用户

发布于 2018-02-26 08:15:56

ngClass中,键是要添加的类,值是条件,如果条件为真,则类将被添加,否则它不会添加。

因此,您实际上需要将代码更改为

代码语言:javascript
复制
<i class="far" 
  [ngClass]="{
    'fa-check-square': isItemSelected(item),
    'fa-square': !isItemSelected(item)
  }"
>
</i>
票数 2
EN

Stack Overflow用户

发布于 2018-02-26 08:18:00

更新

问题是FontAwesome用<svg>元素替换了<i>元素,这导致绑定类消失。我建议使用类似npmjs.com/package/angular2-fontawome之类的方法来解决这个问题。

原始

类名字符串需要放在引号中。

代码语言:javascript
复制
<i class="far" [ngClass]="isItemSelected(item) ? 'fa-check-square' : 'fa-square'"></i>

提示

您还应该注意,每次运行更改检测时都会调用isItemSelected(item) (这可能非常频繁),这可能会损害应用程序的响应能力。

通常最好将计算结果添加到属性中,然后绑定到该属性。

我假设isItemSelected(item)只做了很少的工作,所以它可能是可以的,但是您应该知道这会带来麻烦。

票数 2
EN

Stack Overflow用户

发布于 2018-02-26 11:24:08

我也有同样的问题。我设法修复了它,将fa添加到类中:

代码语言:javascript
复制
<i class="far fa" [ngClass]="isItemSelected(item) ? 'fa-check-square' : 'fa-square'"></i>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48984019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档