【问题标题】:Angular 2 - Handling multiple checkboxes checked stateAngular 2 - 处理多个复选框选中状态
【发布时间】:2018-03-18 00:02:29
【问题描述】:

我正在构建一个注册表单,并且必须处理通过 *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 }
];

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

  • 如果三个 objects.checked 之一 == false,则所有复选框都将显示为未选中
  • 仅当所有三个objects.checked == true 时,才会在表单中检查所有三个。

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

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

问候,克里斯

【问题讨论】:

标签: forms angular checkbox ngfor


【解决方案1】:

语法没问题,嗯,你也可以

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

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

{{client |json }}

检查一下

【讨论】:

  • 谢谢,但没有帮助。 yurzui 为我提供了一个堆栈闪电战,显示了我的确切代码,它正在那个平台上运行。不知道我的应用出了什么问题...
【解决方案2】:

好吧,在试图弄清楚为什么我的本地应用程序没有显示我想要的结果之后,我开始将我的表单组复制并粘贴到它所在的 &lt;form&gt;&lt;/form&gt; 元素之外。

Ta-daa,它现在可以工作了。

仅供参考:在 &lt;form&gt;&lt;/form&gt; 元素中放置 *ngFor 复选框会导致不需要的行为。

【讨论】:

【解决方案3】:

在 Angular 中,每个模型都与 name 绑定,这意味着您需要为每个 Form 元素赋予唯一的名称`

例如:

<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 }];

现在检查:) 谢谢

【讨论】:

  • 嗨,Memon,我尝试了你的建议。我的 HTML 包含在您的解决方案中的
    元素中,似乎对我不起作用。不过感谢您的努力!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2020-03-24
  • 2016-05-02
  • 2021-12-06
相关资源
最近更新 更多