Angular 2:默认选中ngFor中的复选框

时间:2017-07-13 19:52:09

标签: angular typescript checkbox ngfor angular2-ngmodel

我试图在我的ngFor内的复选框上设置默认值。 这是我的复选框项目数组:

tags = [{
  name: 'Empathetic',
  checked: false
}, {
  name: 'Smart money',
  checked: true
}, {
  name: 'Minimal help after writing check',
  checked: false
}, {
  name: 'Easy term sheet',
  checked: true
}];

这是我的HTML

<div class="form-group">
  <div class="form-check" *ngFor="let tag of tags;">
    <label class="form-check-label" for="tag{{tag.value}}">
      <input
        class="form-check-input"
        type="checkbox"
        id="tag{{tag.value}}"
        name="tagOptions"
        [(ngModel)]="tag.checked">
      {{tag.name}}
    </label>
  </div>
</div>

所需的结果是获得2个选中,2个未选中的框,但所有这些框都未选中。我还尝试了[checked] =&#34; tag.checked&#34;的不同变体,但它似乎没有做到这一点。

5 个答案:

答案 0 :(得分:15)

这解决了我选中/取消选中复选框的问题,而我仍然可以控制变量的变化。

HTML

  changeCheckbox(tags, i) {
    if (tags) {
      this.tags[i].checked = !this.tags[i].checked;
    }
  }

.TS

display:inline

答案 1 :(得分:4)

使用checked属性而不是ngModel,

 <div class="form-group">
      <div class="form-check" *ngFor="let tag of tags">
        <label class="form-check-label" for="tag{{tag.value}}">
          <input
            class="form-check-input"
            type="checkbox"
            id="tag{{tag.value}}"
            name="tagOptions"
            [checked]="tag.checked">
          {{tag.name}}
        </label>
      </div>
   </div>

<强> DEMO

答案 2 :(得分:2)

我知道这是一个旧线程,但是最近我遇到了一个类似的问题,问题出在名称标签上,因为表单的每个复选框都相同,您可以按如下所示使用它:

android:adjustViewBounds="true"

答案 3 :(得分:1)

这个问题救了我的大脑健康哈哈。但是我在正确答案中做了“升级”:

HTML:

<div class="form-group">
      <div class="form-check" *ngFor="let tag of tags; let i = index;">
        <label class="form-check-label" for="tag{{tag.value}}">
          <input
            class="form-check-input"
            type="checkbox"
            id="tag{{tag.value}}"
            name="tagOptions"
            (change)="changeCheckbox($event, i)"
            [checked]="tag.checked">
          {{tag.name}}
        </label>
      </div>

TS:

changeCheckbox(event, index){
      this.tags[index] = event.target.checked;
    }

答案 4 :(得分:0)

将名称标签用作ID:

   <label class="form-check-label" for="tag{{tag.value}}">
      <input
        class="form-check-input"
        type="checkbox"
        id="tag{{tag.value}}"
        name="tag{{tag.value}}"
        [(ngModel)]="tag.checked">
      {{tag.name}}
    </label>