angular - 无法在 Angular 中获取先前检查的表单值
问题描述
更新表单时,我的 meetupform.controls.day 数组未保存之前检查的值
app.component.html
<div *ngIf="meetupForm.controls.recurring.value==='weekly'">
<mat-checkbox (change)="onDayChange(day, $event.checked)" *ngFor="let day of days" class="margin-lr" [checked]="isClassDay(day)">{{day}}</mat-checkbox>
</div>
app.component.ts
onDayChange(day: string, isChecked: boolean) {
const dayFormArray = <FormArray>this.meetupForm.controls.day;
if (isChecked) {
// add to day array if checked
dayFormArray.push(new FormControl(day));
} else {
// remove from day array if unchecked
const index = dayFormArray.controls.findIndex(x => x.value === day);
dayFormArray.removeAt(index);
}
}
解决方案
每次更改检查值时,您都在创建数组的新实例:
onDayChange(day: string, isChecked: boolean) {
const dayFormArray = <FormArray>this.meetupForm.controls.day;
...
}
您需要创建dayFormArray
组件的属性以保留该值。
private dayFormArray: FormArray;
ngOninit(){
this.dayFormArray = = <FormArray>this.meetupForm.controls.day;
}
onDayChange(day: string, isChecked: boolean) {
if (isChecked) {
// add to day array if checked
this.dayFormArray.push(new FormControl(day));
} else {
// remove from day array if unchecked
const index = this.dayFormArray.controls.findIndex(x => x.value === day);
this.dayFormArray.removeAt(index);
}
}
推荐阅读
- c# - 序列化具有 3 个级别的 XML 文档
- python - 如何在 python2 中保留 hexdump 的原始格式?
- python - 如何从未知的深度和宽度递归地创建一个python字典,但还要添加值?
- vuejs3 - vue3 中的 shallowReactive 和 shallowRef 的区别?
- html - blob 文件:无法通过链接访问
- python - 有没有办法忽略对单个函数的 mypy 检查?
- c# - 将 XML 转换为字典
- javascript - 如何更改jquery datepicker的默认值
- asp.net - 我想从 F# 调用 index.cshtml
- javascript - Angular 在页面的哪个位置加载脚本?