javascript - 保存从 ngFor 创建的表数据 Angular 2

标签 javascript angular

我正在根据从后端获取的数据创建一个可编辑的表格,现在我想保存已更新的数据。 我试过使用 formControl 但它只保存最后一列中的数据 这是我的代码

    <form [formGroup]="pagesForm">
        <tr *ngFor="let data of pagesArray; let i = index;  trackBy: trackByFn">
           <td style="text-align: center;" >
              <input type="text" formControlName="nameControl" value=[data.name]>
          </td>
           <td style="text-align: center;">
               <input type="text" formControlName="descriptionControl" 
               vaue=[data.description]>
           </td>

         </tr>
    <button class="btn btn-common" (click)="submit(pagesForm)">Save</button>
    </form>

谁能帮我批量保存这张表数据

最佳答案

在 react 形式的情况下,我建议这样做,尤其是在处理数组时......您需要一个 FormArray ,当您从后端获取值时将它们推送到其中。

因此您可以构建表单:

constructor(private fb: FormBuilder) {
  this.pagesForm = this.fb.group({
    arr: this.fb.array([])
  })
}

当您收到数据时,在回调中(subscribethen 如果您使用的是 promises)调用一个方法,在本例中为 setFormArray() 填充您的表单数组:

setFormArray() {
  let arr = this.pagesForm.controls.arr;
  this.pagesArray.forEach(x => {
    arr.push(this.fb.group({
      name: x.name,
      description: x.description
    }))
  })
}

然后你可以修改你的模板来迭代formarray:

<form [formGroup]="pagesForm" (ngSubmit)="submit(pagesForm.value)">
  <div formArrayName="arr">
    <tr *ngFor="let page of pagesForm.controls.arr.controls; let i = index" 
        [formGroupName]="i" >
      <td>
        <input type="text" formControlName="name">
      </td>
      <td>
        <input type="text" formControlName="description">
      </td>    
    </tr>
  </div>
  <button type="submit">Save</button>
</form>

现在您最终得到一个包含属性 arr 的表单对象,它是您的数据数组。

这是一个演示:http://plnkr.co/edit/zfpbUzkvMLOn8CCermGD?p=preview

希望对您有所帮助! :)

关于javascript - 保存从 ngFor 创建的表数据 Angular 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46567919/

相关文章:

javascript - Python 和 JavaScript 之间的语义有何不同?

javascript - 样式化 html5 的范围控件

具有 clipboardData 属性的 Angular2 组件

html - 具有不同按钮样式的CSS导航栏

javascript - Angular 2 Webworkers Http 未捕获( promise ): not implemented

angular-cli - Angular2/Angular -cli : issues updating local project to Angular 4

javascript - Django,&lt;script&gt; 标记内的代码在模板中不起作用

javascript - 如何设置 useEffect 在第一次使用 eslint-react-hooks 渲染时从 API 获取数据?

javascript - Angular - Controller 中的自定义验证器函数 : How to access 'this' ?

javascript - XMLHttpRequest 中默认的 Content-Type 是什么?