如何在Angular4中编写FormBuild for Dynamic输入?

时间:2017-10-17 13:03:12

标签: javascript angular typescript angular-forms

这是我的.html文件。

<div *ngFor="let q of questions">
                <div class="row">
                    <div class="col-md-12 col-12">
                       <label>{{q.question}}</label>
                    </div>
                    <div class="col-md-12 col-12 q-row">
                        <div class="form-group" [ngClass]="{'has-error':!complexForm.controls['{{q.id}}'].valid && complexForm.controls['{{q.id}}'].touched}">
                            <input class="form-control" type="text"  [formControl]="complexForm.controls['{{q.id}}']">
                           <div *ngIf="complexForm.controls['{{q.id}}'].hasError('required') && complexForm.controls['{{q.id}}'].touched" class="invalid">Please provide your name.</div>
                       </div>
                    </div>
                </div>
            </div>

变量问题可以有任何长度,我在这里循环。我不知道如何编写表单构建以在提交后读取数据。请帮助我吗?在此先感谢。

1 个答案:

答案 0 :(得分:0)

如果您使用模板驱动方法,则必须将ngModel添加到输入字段,以便检索ts文件中的数据。然而,由于您将拥有许多输入字段,因此无法正常工作。

首先,您必须在ts文件中设置一个被动表单方法。

然后你需要在* ngFor中获取索引。每个formControl都将使用[formControlName]

命名此索引
    <div 
            class="form-group"
            *ngFor="let q of questions; let i = index">
            <input type="text" name="question" class="form-control" [formControlName]="i">
   </div>

但我在这里假设很多。如果您提供有关表单和ts文件的更多信息,将会有所帮助。