我尝试在使用*ngFor
进行迭代时获得一个自定义复选框“ clickable”。我有自定义CSS,但是click事件没有任何作用。
我猜这是因为标签上的for
属性,但是我不知道如何解决它。
Stackblitz:https://stackblitz.com/edit/angular-4znmwv?embed=1&file=src/app/app.component.css&view=editor
HTML:
<div *ngFor="let item of data">
<input type="checkbox" [checked]= "item.selected" (change)="setChange(item, $event)">
<label htmlFor="{{item.name}}">{{item.name}}</label>
</div>
CSS:
input[type="checkbox"] {
position: absolute;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
input[type="checkbox"] + label {
display: block;
position: relative;
padding: 0 1.5rem;
}
input[type="checkbox"] + label::before {
content: '';
position: relative;
display: inline-block;
margin-right: 10px;
width: 20px;
height: 20px;
color: #2a3037;
background-color: #fff;
border-color: #1c8d3e;
}
input[type="checkbox"]:checked + label::before {
color: #fff;
background-color: #138630;
border-color: #000000;
}
input[type="checkbox"]:checked + label::after {
content: '';
position: absolute;
top: 3px;
left: 27px;
border-left: 2px solid black;
border-bottom: 2px solid black;
height: 6px;
width: 13px;
transform: rotate(-45deg);
}
input[type="checkbox"]:focus + label::before {
outline: #5d9dd5 solid 1px;
box-shadow: 0 0px 8px #5e9ed6;
}
input[type="checkbox"]:disabled + label {
color: #575757;
}
input[type="checkbox"]:disabled + label::before {
background: #ddb862;
}
答案 0 :(得分:1)
像这样尝试,我刚刚为项目名称设置的复选框ID的标签库设置了for属性
<div *ngFor="let item of data">
<input type="checkbox" [id]="item.name">
<label [for]="item.name">{{item.name}}</label>
</div>
答案 1 :(得分:0)
import pandas as pd
import sys
# generate results as before
d = dict([('i', list()),
('j', list()),
('res1', list()),
('res2', list())])
for i in range(5):
for j in range(5):
d['i'].append(i)
d['j'].append(j)
d['res1'].append(res1[i][j])
d['res2'].append(res2[i][j])
df = pd.DataFrame(data=d)
df.to_csv(sys.stdout, index=False)
尝试一下。
将id设置为与标签的for相同,它将可以正常使用,<div *ngFor="let item of data;let i = index">
<input type="checkbox" [checked]= "item.selected" id="{{item.name}}" (change)="setChange(item, $event)">
<label for="{{item.name}}">{{item.name}}</label>
</div>
仅是label的属性名称,而不是htmlFor。
如果您希望ID与动态提供索引使用的项目名称不同,请在此处添加索引以供参考
for
这样,您的ID就是这样
checkbox1
checkbox2
...