javascript - Angular 8 Form Array控件不适用于选择
问题描述
尝试通过选定的国家/地区以使各个州绑定到同级下拉列表中。不幸的是,它抛出了一个错误。
代码有什么问题。亲切的建议。
HTML
<form [formGroup]='entityForm'>
<div formArrayName="optionGroups" class="ui-g ui-g-12 ui-g-nopad " >
<div class="ui-g ui-g-12 ui-g-nopad " *ngFor="let item of entityForm.controls['optionGroups'].controls; let $index=index" [formGroupName]="item">
<select formControlName="country" class="ui-inputtext" (change)="onCountryChange(entityForm.controls['optionGroups'].controls[$index].controls['country'].value, $index)" >
<option>--Select--</option>
<option *ngFor="let c of countries" [ngValue]="c.value">{{c.label}}</option>
</select>
<select formControlName="state" class="ui-inputtext">
<option>--Select--</option>
<option *ngFor="let state of states[entityForm.controls['optionGroups'].controls[$index].controls['country'].value]" value="state.value">{{state.label}}</option>
</select>
</div>
</div>
角 8 - TS
public countries = [];
public states = [];
public entityForm: FormGroup;
constructor() {
this.entityForm = this.fb.group({
optionGroups : this.fb.array([
this.fb.group({
country : [],
state : [],
}),
])
this.countries = [{"label":"United States","value":"US"},{"label":"Canada","value":"CA"}];
this.states=[];
}
onCountryChange(selectedCountry: string , formIndex : number) : void {
this.states[selectedCountry] = this.getStates(selectedCountry)
}
选择国家时出错
解决方案
您尝试使用 访问数组的 formGroups [formGroupName]='item'
。item
但是,它不是一个名称,而是一个对象(一个 FormGroup)。那就是您在控制台中看到的对象。请改成[formGroup]='item'
推荐阅读
- vue.js - nuxt 和电子 - 不能得到 /
- php - php codeigniter zip文件崩溃
- javascript - 我想要一个带有 md-select 的空白选项,并且我希望它在需要时不进行验证
- azure - 托管集群在哪里结束,我们的职责从 Azure Kubernetes 服务开始?
- java - 我们知道 HashSet 在内部作为 HashMap 工作,所以在打印 Hashset Object 时,为什么元素会出现在数组中?
- python - tf.cond :将元素添加到列表中
- sql - 如何在 SQL 结果中添加新行?
- typescript - 如何自动修复 vuejs 中的 tslint 错误
- ios - 从后台线程返回函数
- sparql - 限制列表上的 SPARQL 查询