Angular 4 - 我可以使用 ngFor 动态创建表单吗?

Angular 4 - Can I create a form dynamically with ngFor?

我正在尝试使用 ngFor 动态创建可编辑的表单。基本上,一个数据网格,这就是我使用其他系统的方式——也许这是我应该采用的方式,但我首先尝试了这个。

<form #employeeForm="ngForm">
      <tr *ngFor="let employee of newEmployees | filter:filterCriteria; let i = index" [class.active]="i == selectedRow" [attr.rowIndex]="i">
          <td class="clickable" (click)="showEmployee(i)">
             <div>{{employee.avatar}}</div>
          </td>
          <td>
            <md-input-container dividerColor="accent" >
             <input mdInput placeholder="name" value={{employee.name}} name="employee-name-{{employee.id}}" [(ngModel)]="employee-name-{{employee.id}}"/>
           </md-input-container>
        </td>
       ...
        <td>
       <md-icon (click)="saveEmployeeChanges(employee.id)">save</md-icon></td>
        </tr>
</form>

我是不是找错人了?如果这可行,我如何从组件内访问每个输入字段(会有更多)?以及如何获取行中每个字段的值(而不仅仅是最后更改的字段)。

有很多方法可以解决这个问题。

你见过这样的例子吗:https://angular.io/guide/dynamic-form

但是你也有一个选择。你可以改变这个:

<md-icon (click)="saveEmployeeChanges(employee.id)">

对此:

<md-icon (click)="saveEmployeeChanges(employeeForm)">

这会将表单及其所有关联控件传递给您的组件 class。

要访问表单上的控件,您可以使用:

employeeForm.get('name').value;

您可以在此处的 Angular 文档中找到更多信息:https://angular.io/guide/reactive-forms#inspect-formcontrol-properties