Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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
Angular 如何将表单输入动态添加到反应式表单_Angular_Typescript_Web Applications_Angular Reactive Forms - Fatal编程技术网

Angular 如何将表单输入动态添加到反应式表单

Angular 如何将表单输入动态添加到反应式表单,angular,typescript,web-applications,angular-reactive-forms,Angular,Typescript,Web Applications,Angular Reactive Forms,我遵循了本教程: 以了解更多有关反应形式的信息。我已经生成了一个嵌套的表单,就像在视频中一样,并试图创建一个在单击按钮时生成的formarray。但是当我点击我的按钮时,什么也没有发生。也没有错误,但我的输入没有出现。我反复检查了好几次,但是视频和我拥有的是相同的。也许有人能从这里看一下,告诉我我的错误在哪里吗 在typescript中生成表单的代码: ngOnInit() { this.materialAddForm = this.fb.group({ article_

我遵循了本教程: 以了解更多有关反应形式的信息。我已经生成了一个嵌套的表单,就像在视频中一样,并试图创建一个在单击按钮时生成的formarray。但是当我点击我的按钮时,什么也没有发生。也没有错误,但我的输入没有出现。我反复检查了好几次,但是视频和我拥有的是相同的。也许有人能从这里看一下,告诉我我的错误在哪里吗

在typescript中生成表单的代码:

ngOnInit() {
    this.materialAddForm = this.fb.group({
        article_seller_id: '',
        informationNote: '',
        buildMaterial_sellers: this.fb.array([
          ]),
        materialCode: '',
        materialName: '',
        materialType: '',
        material_image_url: '',
        material_prices: '',
        quantity: '',
      }
    )
  }

  get sellerForm(){
    return this.materialAddForm.get('buildMaterial_sellers') as FormArray
  }
   addSellerForm(){

    const sellerForm = this.fb.group({
      name: []
    })
     this.sellerForm.push(sellerForm)

  }
Html只是动态表单部分:

<div class="-pull-right">
                    <button type="button" (click)="addSellerForm()" class="btn btn-primary mb-2">Add Seller</button>
                  </div>

    <div formArrayName="buildMaterial_sellers">
                <div *ngFor="let seller of sellerForm.controls let i=index" [formGroupName]="i">
    
                  <div class="input-group input-group-sm col-12 col-md-6 mb-4">
                    <div class="input-group-prepend">
                      <span class="input-group-text" id="name">Seller Name</span>
                    </div>
                    <input type="text" class="form-control" aria-label="Sizing example input"
                           aria-describedby="inputGroup-sizing-sm"
                           formControlName="name" >
                  </div>
    
                </div>
              </div>

添加卖家
卖方名称

您正在将一个空表单组推送到表单数组中。因此,当模板按名称查找控件时,它可以在组中找到属性,但该属性下没有控件可供其访问。您可能希望改为按此按钮:
{name:this.fb.control()}
。确保只在数组中推送所需的实际ReactiveForm类型。当前,您的模式将向表单数组中添加表单组,而不是表单控件。这是一个有效的模式,但它可能不是您想要的。

这是否回答了您的问题?对不起,我不太理解这里的解决方案,它似乎比视频中的解决方案更复杂。如果你的目标是了解更多关于动态反应形式的信息。。。复制该解决方案,并理解它,将为您提供使用动态反应表单所需的所有信息。我知道答案是您的。哈哈,您可以向我解释一下它如何使用buildForm方法吗?这和我想要的有点不同,你们有一个fix数据变量,它是3。我想要的是通过单击按钮生成它,这是否意味着我尝试将它更改为一个数字,但它不起作用,或者我必须忽略数据,但我将遍历哪个数组?您是正确的,这是您想要查看的正确方法。唯一的区别是,该方法在对象数组上循环,以构造
推送
。。。
push
中的语法是按钮功能所需的语法。