我有以下地图
List<Map<String, dynamic>> symptoms = [
{'name': 'Dizziness', 'checked': false},
{'name': 'Fainting', 'checked': false}
];
我的错误的 html尝试如下所示
<div class = "form-group">
<div class = "form-control"
ngControl = "symptoms">
<label for="symptom" >Symptoms</label>
<input
type = "checkbox"
*ngFor = "#symptom in symptoms"
[checked]="symptom['checked']"/>
</div>
</div>
我的问题如下:
- 每个复选框的标签应为&#34;症状[&#39;名称&#39;] - 如何将其整合到* ngFor?
- 如何确定选择了特定的复选框?
醇>
我现在使用以下内容查看复选框和标签:
<div layout = "row"
layout-align = "center"
class = "form-group"
*ngFor = "#s of symptoms">
<label>{{s['name']}} </label>
<input
type = "checkbox"
[checked] = "s['checked']"
class = "form-control"/>
</div>
然而,标签似乎在一行而复选框在另一行。我正在使用bootstrap.min.css并想知道这是否是主要原因。复选框也大于预期,如下所示:
干杯,谢谢 玩具
答案 0 :(得分:2)
您的ngFor
语法不正确。表达式应为“#binding 列表”,而不是 。有关详细说明,请参阅Mark's answer。
此外,如果您想重复标签和复选框,则需要将模板移到DOM树的上方。为此,请使用展开的ngFor
语法。
最后,使用ngModel
而不是绑定到checked
- 属性的存在必须是checked="checked",这不适合绑定到Boolean
。< / p>
@Component({
selector: 'my-app',
directives: [NgFor],
template: `{{title}} <br />
<form>
<div class = "form-group">
<template ngFor #symptom [ngForOf]="symptoms">
<div class = "form-control">
<label for="symptom" >{{symptom.name}}</label>
<input
type = "checkbox"
ngControl="symptom"
[(ngModel)]="symptom['checked']" />
</div>
</template>
</div>
</form>
`
})