Forms 角度复选框标签不触发更改事件
我已经实现了一个组复选框组件,如本文所述: 除了我有一个问题外,所有的工作都很好,复选框的标签不会触发更改事件,只有实际的复选框部分。在下面的plunker中,尝试单击复选框方框和标签,两者都触发复选框并更新数据模型,但只有复选框部分触发更改。我怀疑这与转移值有关 查看此plunker 代码Forms 角度复选框标签不触发更改事件,forms,angular,checkbox,Forms,Angular,Checkbox,我已经实现了一个组复选框组件,如本文所述: 除了我有一个问题外,所有的工作都很好,复选框的标签不会触发更改事件,只有实际的复选框部分。在下面的plunker中,尝试单击复选框方框和标签,两者都触发复选框并更新数据模型,但只有复选框部分触发更改。我怀疑这与转移值有关 查看此plunker 代码 <checkbox-group [(ngModel)]="selectedItems"> <checkbox *ngFor="let item of availableItems
<checkbox-group [(ngModel)]="selectedItems">
<checkbox *ngFor="let item of availableItems"
[value]="item"
(change)="onItemChange($event, item)">
{{item}}
</checkbox>
</checkbox-group>
<p>Selected items - {{selectedItems | json}}</p>
{{item}}
所选项目-{selectedItems | json}
使用单击事件侦听器,而不是更改。像这样
(click)="onItemChange($event, item)"
如果您使用的是
ngModel
,还可以使用(ngModelChange)
事件。
我有一些正常的复选框
,并且(单击)
和(更改)
事件从不被触发。
使用(ngModelChange)
,它可以工作(如果使用ngModel
,则还应与
以外的其他标记一起工作):
如果从复选框(而不是使用(单击)
或(更改)
时的MouseEvent
)触发$event
,则$event
参数将是布尔值
通过使用
ngModel
和ngModelChange
,您可以拆分香蕉盒[(ngModel)]
,这样您就可以自己进行更改(可能还有额外的工作),而不是[(ngModel)]
,后者可以自己进行“简单的”ngModelChange
-更新。太棒了,谢谢!你能解释一下为什么(变更)起到了一半的作用,让我有更好的理解吗?我认为问题与你正在使用的checkbox指令有关。如果将输入标记包装在标签标记中,那么更改事件将顺利进行。在你的plunker测试中试试这个
<input type="checkbox"
(ngModelChange)="selectAllForBatchImport($event)"
[ngModel]="areAllEntriesChecked"/>