我正在创建这个页面,该页面假设包含多个响应式来源(例如,对于每个国家/地区)。这些表单应该基于我从后端获得的 json 数组创建,以便用户可以查看当前设置是什么并单独更新。因为我不知道我将获得多少这些数据集,所以我为我获得的每个数据集创建了一个主表单和一个 FormArray。但是,如果我在表单验证器将其中一个字段标记为无效时使用 FormArray,则整个表单将被标记为无效(所有 FormArray 嵌套表单)。
我还尝试为可观察对象中的每个数据集创建不同的表单,但它给了我以下错误
TS2339: Property 'countryForm' does not exist on type 'CountryComponent'.
所以这是我的 TS
export class CountryComponentimplements OnInit {
// Form
countryForm: FormGroup;
ngOnInit() {
this.spinner.show();
this.GetCountryDef();
}
GetCountryDef() {
// tslint:disable-next-line:max-line-length
this.http.get(`https://api_call`).subscribe(
(data: any) => {
// Form
const CountryArray = new FormArray(data.map(item => new FormGroup({
country: new FormControl(item.country, Validators.required),
population: new FormControl(item.population, Validators.pattern(/\-?\d*\.?\d{1,5}/)),
GPD: new FormControl(item.GPD, Validators.pattern(/\-?\d*\.?\d{1,5}/))
.......
}),
));
this.countryForm= this.fb.group({
country: CountryArray ,
});
this.spinner.hide();
}
);
}
我的html
<td mat-cell *matCellDef="let country; let i = index">
<form style="width: inherit;" [formGroup]="countryForm">
<div formArrayName="country">
<div formGroupName={{i}}>
<label >populcation:</label>
<input matInput type="number" formControlName="population">
<label >GPD:</label>
<input matInput type="number" formControlName="GPD">
.......
</form>
</td>
所以我的问题是如何从可观察对象动态创建 FromGroup,或者如何使验证器仅标记一个 FormArray 的错误?
==================================================== =============================@AJT_82 我试过了,但是即使加载了表格也没有显示。
所以我把它改成了
export class CountryComponentimplements OnInit {
// Form
//countryForm: FormGroup;
和
let countryForm: FormGroup; // Will change to to different form for each country after
countryForm= this.fb.group({
country: CountryArray ,
});
它给了我同样的错误
TS2339: Property 'countryForm' does not exist on type 'CountryComponent'.