Angular 7 Reactive Formarray 级联下拉列表 - 如何以 UI 形式加载保存的数据
Angular 7 Reactive Formarray cascading dropdown - How to load saved data back in UI form
我关注了 Whosebug link
并达到了预期的效果。最重要的是,当用户尝试再次编辑选项时,我想将保存的数据从数据库加载回 UI 。我几乎已经实现了,但是第二个下拉列表存在问题。需要有关为每个 formarray 行动态加载 wheres[] 的帮助。我在数据库中保存 formarray json 并检索它并迭代。
options: string - 存储formarray的DB中的变量名
private retrieveSavedControls(options: string): FormArray{
console.log(classes);
this.profileForm= this.fb.group({
optionGroups: this.fb.array([])
})
const control = <FormArray>this.profileForm.controls['optionGroups'];
this.units = JSON.parse(options).optionGroups;
console.log('parsed json: ',this.units);
let index =0;
this.units.forEach(unit => {
control.push(this.fb.group({
selectInput: ['', Validators.required],
whereInput: [[], Validators.required]
}));
// this part should've loaded the list for each of the 2nd dropdown but not loading.
this.wheres[unit.selectInput] = this.getWhere().filter((item)=> item.selectid == unit.selectInput);
(<FormArray>this.profileForm.controls['optionGroups']).controls[index]
.patchValue({ selectInput: unit.selectInput, whereInput: unit.whereInput});
index++
})
console.log('control: ',control)
return control;
}
全部。这是我的代码的问题。由于某种原因,实际列表是空的。它已修复并成功加载了针对每个单独列表的选定值。
我关注了 Whosebug link
并达到了预期的效果。最重要的是,当用户尝试再次编辑选项时,我想将保存的数据从数据库加载回 UI 。我几乎已经实现了,但是第二个下拉列表存在问题。需要有关为每个 formarray 行动态加载 wheres[] 的帮助。我在数据库中保存 formarray json 并检索它并迭代。
options: string - 存储formarray的DB中的变量名
private retrieveSavedControls(options: string): FormArray{
console.log(classes);
this.profileForm= this.fb.group({
optionGroups: this.fb.array([])
})
const control = <FormArray>this.profileForm.controls['optionGroups'];
this.units = JSON.parse(options).optionGroups;
console.log('parsed json: ',this.units);
let index =0;
this.units.forEach(unit => {
control.push(this.fb.group({
selectInput: ['', Validators.required],
whereInput: [[], Validators.required]
}));
// this part should've loaded the list for each of the 2nd dropdown but not loading.
this.wheres[unit.selectInput] = this.getWhere().filter((item)=> item.selectid == unit.selectInput);
(<FormArray>this.profileForm.controls['optionGroups']).controls[index]
.patchValue({ selectInput: unit.selectInput, whereInput: unit.whereInput});
index++
})
console.log('control: ',control)
return control;
}
全部。这是我的代码的问题。由于某种原因,实际列表是空的。它已修复并成功加载了针对每个单独列表的选定值。