当前位置: 首页 > 知识库问答 >
问题:

带条件的角ngClass

公良光熙
2023-03-14

我是从JSON文件而不是数据库获取数据。我试图根据JSON中的状态值为图标赋色,例如[if green?class1:class2]下面是我的代码

我的HTML文件

   <ng-container matColumnDef="status" [ngClass] = "{'color1': row.status === 
        'GREEN', 'color2': row.status === 'RED'}">
        <th mat-header-cell *matHeaderCellDef mat-sort-header>Status</th>
        <td mat-cell *matCellDef="let row" class="color1">{{row.status}}</td>
        <td mat-cell *matCellDef="let row" class="color2">{{row.status}}</td>
    </ng-container>

下面是我的JSON文件。

    data:[
          {
           "name": "xyz",
           "address": "post",
           "status": "GREEN"
          },
          {
           "name": "xyz1",
           "address": "post1",
           "status": "RED"
           }
         ],
       "count" : 2
}

这是我的CSS

.color1{
  color: green;
}

.color2{
  color: red;
}

**我无法更改状态图标的颜色。我得到了这个错误**

错误类型错误:无法读取未定义的属性“status”

共有1个答案

燕承安
2023-03-14

ngClass接收对象键-值,键可能是无类的,而值是应用键的条件

您可以使用静态检查每个可能的类值,如下所示。

 <td mat-cell *matCellDef="let row" class="color1"
     [ngClass]="{
     'green': row.status === 'GREEN',
     'red': row.status === 'GREEN'">{{row.status}}</td>


相同想法的其他选择

<td mat-cell *matCellDef="let row"
[class.red] = "row.status === 'RED'"
[class.green] = "row.status === 'GREEN'" >
{{row.status}}
</td>

另一种方法是使用map objetc在您的ts中定义类,并从html中访问一次,比如这个typescript文件

mapClass = {
  'GREEN': 'green',
  'RED': 'red' 
}

和html

 <td mat-cell *matCellDef="let row" class="{{mapClass[row.status]}}">{{row.status}}</td>

最后一种方法更好,如果可能的类值发生了变化,使用mapClass只需添加新的可能值,并定义css类,html保持不变。

编辑:我认为你编辑你的原始问题,我回答那个原始问题。您当前的错误在我看来是因为您正在尝试将ngCLass与ngcontainer一起使用,尝试在TD中使用ngCLass。我看到你显示双td在容器内不同的类,没有NGIF。如果我理解rigth,那么使用这种方式您应该使用ngIf来显示行状态一次。任何方式,检查我之前的回答,我希望对你有帮助

 类似资料:
  • 问题内容: 我的Angular代码有什么问题?我正进入(状态: 的HTML 问题答案: Angular版本2,…,9提供了几种有条件地添加类的方法: 第一类 第二类 和多个选项: 第三类 四类

  • 问题内容: 对于似乎很简单的问题,我找不到解决方案。假设有2种实体类: 如何创建一个标准查询以返回包含至少一个满足给定条件(例如b.text =’condition’)的B实体的所有A? 问题答案: 我认为此链接可能很有用:http : //mikedesjardins.net/2008/09/22/hibernate-criteria- subqueries-exists/ 它包含以下有关如何创

  • 问题内容: 在Python中编写selenium测试时,我习惯于使用Explicit Waits来等待页面加载,或等待元素可见或可点击等: 这里的关键概念是提供等待的 期望条件 ,有多种类型: 等等 与使用带有硬编码时间间隔的s 相比,使用期望条件使代码更清洁,更可靠。 现在,我们正在将端到端测试基础架构转换为很多。 是否有类似的量角器,因为在或 ?如果不是,显式等待in中条件的规范方法是什么?

  • 我的角码出了什么问题?我得到以下错误: 无法读取BrowserDomAdapter.RemoveClass中未定义的属性“Remove”

  • 我有一个集合,其中的文档如下所示:

  • 问题内容: 你如何用ng- repeat做这样的事情?我将使用文档中的示例,该示例将一个包含2个朋友的数组初始化为一个数组,如果我只想对所有26岁以上的朋友重复一次该怎么办? 问题答案: 创建一个自定义过滤器。 HTML: 和 JS: