[英]Angular 2 dynamic form with checkbox doesn't work?
我必须对复选框控件进行两项更改以更新值:
如果有人遇到相同问题,这是已修复的plnkr 。
为简便起见,这是复选框控件现在的样子:
<input #ck *ngSwitchWhen="'checkbox'" (change)="control.value = ck.checked" [id]="control.key" [ngControl]="control.key" [type]="control.type" [class.error]="!control.valid"
[(ngModel)]="control.value" class="form-control">
@ Nexus23的解决方案工作,但模板参考VAR的使用#ck
只允许一个内复选框FormGroup 。
您可以直接从change事件设置FormControl的值(在FormGroup中 ):
(change)="formGroup.controls[element.name].setValue($event.target.checked)"
自FormControl。 setValue的emitEvent , emitModelToViewChange和emitViewToModelChange默认为true
,似乎不需要手动更新其他属性。
修改为angular的动态形式 ( stackblitz上的工作示例 ):
<input *ngSwitchCase="'checkbox'" [formControlName]="question.key"
[id]="question.key" [type]="question.type" (change)="form.controls[question.key].setValue($event.target.checked)">
我认为,由于这是用于动态表单的,因此我们无法对复选框参考ID进行硬编码,因为表单中可能有多个复选框。 同样,如果选中了初始值,则该复选框仍会显示为未选中状态。 下面的代码解决了这些问题(已在Angular 2 rc4中进行了测试)。 我还为复选框添加了标签。 希望能有所帮助。
<label *ngSwitchCase="'checkbox'"><input (change)="question.value = $event.target.checked" [(ngModel)]="question.value" [attr.checked]="question.value ? true : null" [formControlName]="question.key" [id]="question.key" [type]="question.type"> {{question.label}}</label>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.