【发布时间】:2017-08-20 10:27:09
【问题描述】:
我仍在学习响应式表单,并且我希望为数组属性(例如爱好)设置多个复选框。所以我将组定义如下
this.myForm = this.fb.group({
name: ['', Validators.required],
hobbies: this.fb.array([])
});
Hobbies 是一个数组:hobbies = ['Cooking', 'Swimming', 'Hiking', 'Dancing'];
现在,在 HTML 中,我将复选框定义如下:
<div>
<span *ngFor="let hobby of hobbies">
<label>
<input type="checkbox" [value]="hobby" (click)="addToHobby(hobby)"> {{hobby}}
</label>
<br />
</span>
</div>
现在,当检查一个元素时,它根本不会将它添加到 hobbies 属性中,它只是复制了实际的 HTML 元素。我做错了什么?
【问题讨论】:
-
好吧,当用户选择一个复选框时,我希望它在
{{myForm.value | json}}中可见,并且在取消选择时也是如此。此外,在设置模型时,应根据用户的属性选择复选框。 -
如果你想取消选择为什么总是推送它?
-
在示例中,即使取消选择它也会被推送到数组中。什么是正确的方法?
-
这并不是真正的“反应式”做事方式。您不必处理事件来更新表单。