javascript - 如何在 ngFor 内单击以突出显示选定的单选按钮
问题描述
组件.ts
//all imports are done
ngOnInit() {
this.list = {
'eatList': [{
'class': 'Fruits',
'color': ['Red', 'White', 'Black'],
'imageSrc': ['/assets/images/fruit/red-fruit.png',
'/assets/images/fruit/black-fruit.png',
'/assets/images/fruit/white-fruit.png'],
'weights' : [60, 50]
},
{
'modalName': 'Vegetable',
'color': ['Green', 'Black'],
'imageSrc': ['/assets/images/veg/black-veg.png', /assets/images/veg/green-veg.png'],
'weights' : [40, 50]
}
组件.html
<div>
<div *ngFor="let eats of list.eatList" "
>
<h3>{{eats.class}}</h3>
<img src="{{eats.imageSrc[0]}}" alt="image" />
<div>
<ul>
<li *ngFor="let weight of eats.weights;let i = index;">
<input type="radio" [value]="weight" (change)="handleChange($event)" [attr.id]="i"
name="weight" />
<label for="{{i}}">{{weight}}</label>
</li>
</ul>
</div>
</div>
</div>
当我单击输入单选按钮时,我需要以某种颜色选择特定项目。添加了更改事件但无法更改它。
解决方案
您可以使用传递给函数的事件来访问该元素,因为它是一个单击事件,该事件有一个目标,即输入元素,因此您可以执行以下操作:
handleChange(event) {
event.target.style.color = "yellow";
}
此更改不会引起注意,我只是将其作为示例,因为您没有指定以下含义是什么:
以某种颜色选择的特定项目
如果要更改eats
元素的 div,可以在模板上执行以下操作:
<div>
<div *ngFor="let eats of list.eatList" [style.background]="eats.backgroundColor"
>
<h3>{{eats.class}}</h3>
<img src="{{eats.imageSrc[0]}}" alt="image" />
<div>
<ul>
<li *ngFor="let weight of eats.weights;let i = index;">
<input type="radio" [value]="weight" (change)="handleChange($event, eats)" [attr.id]="i"
name="weight" />
<label for="{{i}}">{{weight}}</label>
</li>
</ul>
</div>
</div>
</div>
并在您的组件中:
handleChange(event, parent) {
parent.backgroundColor = "yellow";
}
我在这里做了一个假设,吃是一个对象。此外,您可以将绑定更改为类(使用 ngClass)并以这种方式进行大量 css 更改
推荐阅读
- c# - 我如何确定网站中是否有特定的文本 with Selenium
- google-apps-script - 功能在打开时有效,但在计时器运行时无效
- opencart - 如何显示 opencart 的单位?
- sql-server - 如何在运行时在 Spring Boot jpa 中打开连接?
- reactjs - 从下拉列表中选择选项时,如何获取已更改的对象以及新更改的值
- django - 传递给模板标签时如何使用上下文变量
- ruby-on-rails - 如何通过删除空格来压缩 html.erb 文件?
- java - 无法使用 AsyncTask 生成 url 图像
- plc - 是否可以在结构化文本中间接索引数组(IEC 61131-3 标准)
- java - Android 上的简单 MVVM 架构和 Java 上的 AndroidX