Angular 2 - 处理多个复选框选中状态

Angular 2 - Handling multiple checkboxes checked state

我正在构建注册表单,并且必须处理通过 *ngFor 结构指令生成的多个复选框。

模板:

<div class="form-group">
        <label class="col-lg-3 control-label">Response Type</label>
        <div class="col-lg-7">
          <div class="checkbox" *ngFor="let type of client.responseTypes; let i = index">
            <label>
              <input type="checkbox" name="responseTypes" [(ngModel)]="client.responseTypes[i].checked" /> {{type.value}}
            </label>
          </div>
        </div>
      </div>

TS模型对象:

client.responseTypes = [
{ value: 'type1', checked: false},
          { value: 'type2', checked: true },
          { value: 'type3', checked: true }
];

正确存储选中或未选中的幕后实际值。但是,复选框没有显示正确的值。

我尝试在输入元素上摆弄 [value]="client.responseTypes[i].checked"[checked]="client.responseTypes[i].checked",但没有成功。

非常感谢任何正确方向的指示。

此致,克里斯

语法还可以,嗯,你也可以

<input type="checkbox" name="responseTypes" [(ngModel)]="type.checked">

问题出在其他地方(当你定义客户端时-我想你写的像this.client.responseTypes=...-),你可以写

{{client |json }}

检查一下

好吧,在我想明白为什么我的本地应用程序没有显示我想要的结果之后,我开始从它所在的 <form></form> 元素中复制并粘贴我的表单组。

哒哒,现在可以了。

FYI: Placing *ngFor checkboxes inside a <form></form> element results in unwanted behaviour.

在angular中,每个模型都绑定了名称,这意味着您需要为每个表单元素指定唯一的名称`

例如:

<div class="form-group"><label class="col-lg-3 control-label">Response Type</label>
    <div class="col-lg-7">
      <div class="checkbox" *ngFor="let type of client.responseTypes; let i = index">
        <label>
          <input type="checkbox" name="type.id" [(ngModel)]="client.responseTypes[i].checked" /> {{type.value}}
        </label>
      </div>
    </div>
  </div>

对象:

client.responseTypes = [{id: '1', value: 'type1', checked: false},
      {id: '2', value: 'type2', checked: true },
      {id: '3', value: 'type3', checked: true }];

现在检查 :) 谢谢