st_*_*rke 5 angular2-forms angular
我有以下地图
List<Map<String, dynamic>> symptoms = [
{'name': 'Dizziness', 'checked': false},
{'name': 'Fainting', 'checked': false}
];
Run Code Online (Sandbox Code Playgroud)
我在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>
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
- 每个复选框的标签应为“ symptom ['name']-如何将其集成到* 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>
Run Code Online (Sandbox Code Playgroud)
但是,标签似乎在一行上,而复选框在另一行上。我正在使用bootstrap.min.css,想知道这是否是主要原因。复选框也比预期的大,如下所示:
干杯,谢谢泰迪
你的ngFor语法不正确。表达式应该是“#binding of list”,而不是在. 请参阅马克的回答以获得更详细的解释。
此外,如果您想重复标签和复选框,则需要将模板移至 DOM 树的更高位置。为此,请使用扩展ngFor语法。
最后,使用ngModel而不是绑定到checked- 属性的存在必须被检查为“checked”,这并不适合绑定到Boolean.
@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>
`
})
Run Code Online (Sandbox Code Playgroud)