javascript - 如何在 Angular 2 中切换单击单个元素 CSS 类?
问题描述
我正在循环通过 API 响应并使用以下代码在页面上显示一些项目(女性和男性年龄组):
<ng-container *ngFor="let event of day.availableEvents">
{{ event.name }}
<br>
<ng-container *ngFor="let maleAgeGroup of event.maleAgeGroups">
<span [class.is-active]="status" (click)="updateStatus()" {{ maleAgeGroup }}</span>
</ng-container>
</ng-container>
而且,这是我正在使用的 JSON 数据:
"days": [
{
"date": "2021-04-14T00:00:00.000Z",
"availableEvents": [
{
"id": 1,
"name": "Event A",
"femaleAgeGroups": ["U13", "U15", "U17"],
"maleAgeGroups": ["U13", "U15", "U17"]
},
{
"id": 2,
"name": "Event B",
"femaleAgeGroups": ["U13", "U15", "U17"],
"maleAgeGroups": ["U13", "U15", "U17"]
},
]
}
]
单击一个年龄组时,我想将其状态从真或假切换,以便is-active
添加/删除 CSS 类。
无论我尝试什么 SO 答案,我都无法让它工作,并且在大多数情况下最终会出现“无法将状态分配给类型字符串”之类的错误。这就是为什么我将上面的代码从基础剥离——也许是因为我的数据的结构方式?
下面的示例是我试图结束的示例,其中突出显示的文本已被单击并is-active
应用了类:
解决方案
[class.is-active]
需要“绑定”到一个值,我不清楚你作为一个整体尝试做的事情的意图,但是,每个年龄组都需要一个状态。因此,您需要从服务器更新/修改您的数据,或者在您的组件中增加每个年龄段的状态...
"femaleAgeGroups": [{name:"U13", active:true}, {name:"U15", active:false}, {name:"U17", active:false}], etc..
然后在模板中,您可以将 css 类绑定到布尔值
<ng-container *ngFor="let maleAgeGroup of event.maleAgeGroups">
<span [class.is-active]="maleAgeGroup.active" (click)="updateStatus(maleAgeGroup)" {{ maleAgeGroup.name }}</span>
</ng-container>
..并更新您将项目传递给更新功能并更新其活动状态:
updateStatus(item:any): void {
item.active = !item.active;
}
推荐阅读
- firebase-authentication - 从 Firebase 中的 SafetyNet 注销应用程序检查中的应用程序
- plugins - 谁声明更新 kuzzle V1 到 kuzzle V2 的插件
- node.js - 我应该如何使用 puppeteer (node.js) 为 google 进行 OAuth 自动化测试
- sql - 空值结束日期:db2-sql
- c# - 有没有办法将实体框架中的 where 子句设置为参数?
- c# - 如何在 c# 中使用 selenium 绕过 cloudflare
- deep-learning - 如何为 NIR 图像生成合成面罩图像?
- php - 可以使用 `spl_autoload_register()` 加载哪些符号?
- r - 我更新了 rstudio,当我打开新的 rmarkdown 文件时,我收到了消息
- javascript - javascript display:none指定段落中的每个组件