Javascript 具有动态添加控件的角度阵列

Javascript 具有动态添加控件的角度阵列,javascript,angular,multidimensional-array,angular-reactive-forms,angular-abstract-control,Javascript,Angular,Multidimensional Array,Angular Reactive Forms,Angular Abstract Control,不久前,我开始在Angular 9上编码,我正在创建一个反应式表单,其中包含通过FormArray抽象动态添加的表单控件,但是每当我尝试循环使用FormArray控件的value属性时,我都会遇到这个不可思议的奇怪错误,我已经尝试了将近12个小时。当值节点下只有一个数组项时,不会出现此错误。有人能指出我做错了什么吗 以下是错误: 这是我的表单生成器: this.quotationForm=this.fb.group({ customerId:新FormControl(“”,需要验证器), cu

不久前,我开始在Angular 9上编码,我正在创建一个反应式表单,其中包含通过FormArray抽象动态添加的表单控件,但是每当我尝试循环使用FormArray控件的value属性时,我都会遇到这个不可思议的奇怪错误,我已经尝试了将近12个小时。当值节点下只有一个数组项时,不会出现此错误。有人能指出我做错了什么吗

以下是错误:

这是我的表单生成器:

this.quotationForm=this.fb.group({
customerId:新FormControl(“”,需要验证器),
customerName:新FormControl(),
“联系人”:this.fb.group({
customerAddress:新FormControl(“”,需要验证程序),
customerPhone:新的FormControl(“”,需要验证器),
customerEmail:new FormControl(“”,Validators.email),
}),
“itemsgroup”:新格式数组(
[
本集团({
项目:“”,
数量:“”,
金额:''
})
],{validators:validators.required}),
货币:new FormControl(),
折扣:新建FormControl(),
taxRate:new FormControl(),
taxAmount:new FormControl(),
购买:新FormControl(),
注意:新的FormControl(),
总计:新FormControl(),
ref:new FormControl(),
裁缝:这个,乌斯里德,
datecreated:new FormControl(this.model,Validators.required),
});
以下是来自我的组件的函数调用:

getSelectedItemsSum(){
让quotesTotal=0;
设itemsgroupAmt=0;
设itemsgroupQty=0;
设itemsgroup=this.itemsgroup();
if(itemsgroup.toucted==true&&itemsgroup.status!=='INVALID'){
如果(itemsgroup.value.length>1){
日志(itemsgroup.value);
for(设i=0;i
*
这是我的表格(截短):

请更改
let i=1
而不是
let i=0
,因为您使用的
i小于等于
请更改
let i=1
而不是
let i=0
,因为您使用的
i小于等于
  • 请更改方法
    itemsgroup()
    的名称,您的方法和formArray具有相同的名称
  • 在模板中将
    更改为

    <div *ngFor="let group of quotationForm.get('itemsgroup').controls; let i = index" class="col-xl-12">
    
    
    
  • 无关建议

    与其在模板中的控件上设置
    change
    事件,不如使用“FormControl”提供的
    valueChanges
    observable,这样做更“有角度”

  • 请更改方法
    itemsgroup()
    的名称,您的方法和formArray具有相同的名称
  • 在模板中将
    更改为

    <div *ngFor="let group of quotationForm.get('itemsgroup').controls; let i = index" class="col-xl-12">
    
    
    
  • 无关建议


    与其在模板中的控件上设置
    change
    事件,不如使用“FormControl”提供的
    valueChanges
    observable,这样做会更“有角度”。
    itemgroup
    的结果是什么?你能写(复制粘贴)吗代码而不是拍照?它使阅读和测试更容易。Cheers我现在已经这样做了
    itemgroup
    的结果是什么?你能写(复制粘贴)吗代码而不是拍照?它使阅读和测试更容易。谢谢。我现在已经这么做了。我想这正是我正在做的。我想我现在明白你的意思了。我将编辑并尝试再次提出此建议(让i=0;i
    解决了我的问题。谢谢!我想这正是我正在做的事情。我想我现在明白你的意思了。我会做编辑,然后再次尝试这个建议(让我=0;我
    解决了我的问题。谢谢!很难知道“角度方式”当您还不熟悉它时,您就会知道。谢谢您的建议,标识符“controls”没有定义。“AbstractControl”不包含这样的成员。请将您的代码发布在构建表单的位置
    quotationForm
    是我的笔记本电脑还是valueChanges()触发两次,onBlur和onChange?我将编辑我的问题并添加FormBuilder的代码。当你还不熟悉“角度方式”时,很难知道它。谢谢你的建议,标识符“控件”未定义。“AbstractControl”不包含这样的成员。请将您的代码发布在构建表单的位置
    quotationForm
    是我的笔记本电脑还是valueChanges()触发两次,onBlur和onChange?我将编辑我的问题并为表单生成器添加代码
    <div *ngFor="let group of quotationForm.get('itemsgroup').controls; let i = index" class="col-xl-12">