Angular2:从输入的QueryList获取值的最佳实践

时间:2016-03-07 22:16:35

标签: angular

所以我创建了一个列表输入:

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 :-(
        });

    }

感谢

肖恩

1 个答案:

答案 0 :(得分:2)

我认为最好不要检查DOM元素,而是检查数据 - item.checked的值,无论它们在组件中的哪个位置。如果您检查DOM的原因是更新数据值,那么双向数据绑定的用途是什么。我认为只需将[checked]="item.checked"更改为[(ngModel)]="item.checked"即可使绑定双向,因此Angular2会为您更新数据值。