所以我创建了一个列表输入:
template: `
<div *ngFor="#item of m_checkboxes">
<label class="pull-left">{{item.name}}</label>
<Input #checkInputs type="checkbox" (change)="onChange($event.target.value)" [checked]="item.checked" value="{{item.value}}" class="pull-left" style="margin-right: 2px">
</div>
我通过以下方式创建输入的QuestList:
@ViewChildren('checkInputs')
inputs:QueryList<any>
当点击输入的任何一个复选框时,我在Observables上映射循环,但是我被迫进入NativeElement来获取已检查的值,我觉得必须有更好的方法......
这就是我现在所做的,它有效......但这是最佳做法吗?
private onChange(value) {
this.inputs.map(v=>{
console.log(v.nativeElement.checked); // grab value from native :-(
});
}
感谢
肖恩
答案 0 :(得分:2)
我认为最好不要检查DOM元素,而是检查数据 - item.checked
的值,无论它们在组件中的哪个位置。如果您检查DOM的原因是更新数据值,那么双向数据绑定的用途是什么。我认为只需将[checked]="item.checked"
更改为[(ngModel)]="item.checked"
即可使绑定双向,因此Angular2会为您更新数据值。