Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular6 将多个值推送到FormArray_Angular6_Angular7_Formarray_Formgroups - Fatal编程技术网

Angular6 将多个值推送到FormArray

Angular6 将多个值推送到FormArray,angular6,angular7,formarray,formgroups,Angular6,Angular7,Formarray,Formgroups,我真的被困在这里了。我试着在网上搜索,但没有找到任何有用的东西 我试图把价值推到一个正规的市场。问题是我是数组值,我需要它来将它插入到我的表单中。我只能添加一条记录。它将最后一个迭代的数组对象插入到formArray中 代码如下: .TS salesResult: FormArray; async ClickSearch() { //this method get the dto with the mapped formValues. const getSalesResult = this.

我真的被困在这里了。我试着在网上搜索,但没有找到任何有用的东西

我试图把价值推到一个正规的市场。问题是我是数组值,我需要它来将它插入到我的表单中。我只能添加一条记录。它将最后一个迭代的数组对象插入到formArray中

代码如下:

.TS

salesResult: FormArray;

async ClickSearch() {
//this method get the dto with the mapped formValues. 
const getSalesResult = this.salesEvidenceFormService.getSalesSearchFormGroup(
  this.form
);
//the above method form values passed to the web-api to return result. I get 200 records here. 
const salesSearchResults: any = await this.salesEvidenceService.getSalesSearchData(
  getSalesResult
);

//getting the formArray. this I have used as an arry form. As shown in below code
this.salesResult = this.form.get('salesSearchResult') ;

for (let item of salesSearchResults) {
  this.salesResult.controls[0].setValue(item);
  //this.form.controls.salesSearchResult.value.address = item.address;
}
}

public async form(valuationId: any): Promise<FormGroup> {
const form: FormGroup = this.formBuilder.group({
  id: valuationId,      
  siteAreaUnit: 'm2',
  lettableAreaUnit: 'm2',
  selectedDateRange: 0,
  selectedQuickChoice: '',
  metroNonMetro: 'ALL',
  salesSearchResult: this.formBuilder.array([
    this.getSalesSearchResultForm()
  ])
});
return await form;
  }

getSalesSearchResultForm(): FormGroup {
return this.formBuilder.group({
  id: this.formBuilder.control(''),
  masterId: this.formBuilder.control(''),
  address: this.formBuilder.control(''),
  salePrice: this.formBuilder.control(''),
  saleDate: this.formBuilder.control(''),
  initialYield: this.formBuilder.control(''),
  equivalentYield: this.formBuilder.control(''),
  nlaPsm: this.formBuilder.control(''),
  siteAreaPsm: this.formBuilder.control(''),
  lettableArea: this.formBuilder.control(''),
  wale: this.formBuilder.control(''),
  description: this.formBuilder.control(''),
  commercialSalesExists: this.formBuilder.control(''),
  documentId: this.formBuilder.control(''),
  totalRecord: this.formBuilder.control('')
});
salesfresult:FormArray;
异步ClickSearch(){
//此方法使用映射的FormValue获取dto。
const getSalesResult=this.salesEvidenceFormService.getSalesSearchFormGroup(
这个表格
);
//上面的方法将值传递给web api以返回结果。
const salesSearchResults:any=等待this.salesEvidenceService.getSalesSearchData(
getSalesResult
);
//获取数组。这是我用作数组的窗体。如下面的代码所示
this.salesResult=this.form.get('salesSearchResult');
for(让salesSearchResults的项){
this.saleResult.controls[0]。setValue(项);
//this.form.controls.salesSearchResult.value.address=item.address;
}
}
公共异步表单(估价ID:any):承诺{
const form:FormGroup=this.formBuilder.group({
id:valuationId,
场地面积单位:“m2”,
出租面积单位:平方米,
已选择数据范围:0,
selectedQuickChoice:“”,
节拍器:全部,
salesSearchResult:this.formBuilder.array([
this.getSalesSearchResultForm()
])
});
返回等待表;
}
getSalesSearchResultForm():FormGroup{
返回此.formBuilder.group({
id:此.formBuilder.control(“”),
masterId:此.formBuilder.control(“”),
地址:this.formBuilder.control(“”),
salePrice:this.formBuilder.control(“”),
saleDate:此.formBuilder.control(“”),
initialYield:this.formBuilder.control(“”),
等效字段:此.formBuilder.control(“”),
nlaPsm:此.formBuilder.control(“”),
siteAreaPsm:此.formBuilder.control(“”),
lettableArea:此.formBuilder.control(“”),
这个.formBuilder.control(“”),
描述:此.formBuilder.control(“”),
commercialSalesExists:this.formBuilder.control(“”),
documentId:此.formBuilder.control(“”),
totalRecord:this.formBuilder.control(“”)
});
}


我只想把记录插入我的表格。这样我就可以在html中交互它,以显示从API返回的记录。我不知道我在这里做错了什么

我也有类似的问题,并发布了这个问题。我帖子中“ysf”的答案帮助我解决了这个问题。您可以在“ysf”的注释中找到解决方案。虽然这篇文章很旧,但我希望它能有所帮助。链接到这篇文章的链接是:-


当我使用推送方法时,我做对了。下面是我实现的。一个普遍的例子:

const tempContainer = this.formBuilder.array([]);
for (const current of formArray.controls) {
  const existing = this.saveForm.controls.find(
    x => x.value.Id === current.value.Id
  );

  if (existing) {
    tempContainer.push(existing);
  } else {
    tempContainer.push(current);
  }
}