Angular 以反应式表单检索FormArray中的项目信息

Angular 以反应式表单检索FormArray中的项目信息,angular,angular-reactive-forms,angular-forms,angular4-forms,reactive-forms,Angular,Angular Reactive Forms,Angular Forms,Angular4 Forms,Reactive Forms,我需要一些帮助,通过在下拉列表中选择成分名称来获取单价。所以我所做的就是从表格中获取索引。我还得到了配料id,减去1,然后输入配料索引,只是为了匹配formArray中的索引。但是还有别的办法吗?因为如果将来我的数据库中有一些更改,比如我从数据库中删除一种成分时,那么id将被跳过。请看下面我的代码 这也是我的stackblitz链接 onSelectComponent(事件,i):无效{ 这个.patchValues(event.target.value,i); } 补丁值(id,i){ 设x=

我需要一些帮助,通过在下拉列表中选择成分名称来获取单价。所以我所做的就是从表格中获取索引。我还得到了配料id,减去1,然后输入配料索引,只是为了匹配formArray中的索引。但是还有别的办法吗?因为如果将来我的数据库中有一些更改,比如我从数据库中删除一种成分时,那么id将被跳过。请看下面我的代码

这也是我的stackblitz链接

onSelectComponent(事件,i):无效{
这个.patchValues(event.target.value,i);
}
补丁值(id,i){
设x=(this.addForm.controls['rows']).at(i);
控制台日志(x);
x、 补丁价值({
单价:此.配料[id-1].价格
});
}

您可以通过id查找配料,如下所示
选择的配料

patchValues(id,i) {
    let x = (<FormArray>this.addForm.controls['rows']).at(i);

    const selectedIngredient = this.ingredients.find(y => y.id == id); // beware of number and string

    x.patchValue({
      unit_price: selectedIngredient.price
    });
  }
patchvalue(id,i){
设x=(this.addForm.controls['rows']).at(i);
const selectedIngredient=this.components.find(y=>y.id==id);//注意数字和字符串
x、 补丁价值({
单价:选择的单价
});
}

数据库中的更新意味着??请解释你的目标???@UnluckyAj。对不起,把你弄糊涂了。简而言之,是否有其他方法来获取单价,而不是这个patchValues()函数?谢谢。顺便说一下,在find中有一个错误(x=>x.id==id);x有以下错误“[tslint]阴影名称:'x'(无阴影变量”
patchValues(id,i) {
    let x = (<FormArray>this.addForm.controls['rows']).at(i);

    const selectedIngredient = this.ingredients.find(y => y.id == id); // beware of number and string

    x.patchValue({
      unit_price: selectedIngredient.price
    });
  }