首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >输入数组角度7

输入数组角度7
EN

Stack Overflow用户
提问于 2019-09-07 20:46:19
回答 2查看 60关注 0票数 0

我有一个数组和任何输入,我希望在提交时获得输入中该数组的所有值

代码语言:javascript
复制
<div *ngIf="this.exercises.length != 0" >
  <div class="row" *ngFor="let exercise of exercises; let i = index">
    <div class="col lg-3">
      {{ exercise.name }}
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="serie">
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="repetition"> {{i}}
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="weigth">{{i}}
    </div>
  </div>
</div>

如何获取输入中的所有值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-07 21:14:37

您可以像这样使用FormGroup

代码语言:javascript
复制
<div *ngIf="this.exercises.length != 0" >
  <form [formGroup]="itemForm" >
  <div class="row" *ngFor="let exercise of exercises; let i = index">
    <div class="col lg-3">
      {{ exercise.name }}
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="serie{{i}}">
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="repetitionserie{{i}}"> {{i}}
    </div>
    <div class="col lg-3">
      <input matInput type="text" placeholder="0" formControlName="weigthserie{{i}}">{{i}}
    </div>
  </div>
  </form>
</div>

其次,为表单名称添加itemForm属性,并在ts文件中随时调用FormGroup的值,如

代码语言:javascript
复制
itemForm: FormGroup;
...

ngOnInit(){
  let index=0;
  this.exercices.forEach(controlName =>
    this.itemForm.addControl('serie' + index, new FormControl(''));
    this.itemForm.addControl('repetitionserie' + index, new FormControl(''));
    this.itemForm.addControl('weigthserie' + index, new FormControl(''));
    index++;
  );
}

onSubmit(){
   let formValue = this.itemForm.value;
   ....
}
票数 1
EN

Stack Overflow用户

发布于 2019-09-08 16:48:59

拉斐尔,在FormArray中思考

首先创建一个返回formGroup的函数和一个作为FormArray的变量

formArray:FormArray;

代码语言:javascript
复制
createGroup(data:any)
{
   data=data || {serie:0,repetition:0,weigth:0}
   return new FormGroup({
       serie:new FormControl(data.serie),
       repetition:new FormControl(data.repetition),
       weigth:new FormControl(data.weigth),
   }))
}

其次,在ngOnInit中,使用您的formArray练习创建阵列。您可以循环练习,并使用推送或使用地图

代码语言:javascript
复制
ngOnInit()
{
    this.formArray=new FormArray(this.exercises.map(x=>{
        return this.createGroup(null)
    })
}

您可以简单地迭代FormArray.controls。(*)

代码语言:javascript
复制
<form *ngIf="formArray" [formGroup]="formArray" (submit)="submit(formArray)">
    <div *ngFor="let group of formArray.controls;let i=index" [formGroup]="group">
        {{exercises[i]}}
        <input formControlName="serie">
        <input formControlName="repetition">
        <input formControlName="weigth">
    </div>
    <button type="submit">submit</button>
</form>

您可以在stackblitz中查看代码

(*)是的,有几种方法可以迭代FormArray。子句是FormGroup中的FormArray,我们使用

代码语言:javascript
复制
<form [formGroup]="formGroup">
  <div formArrayName="formArray">
      <div *ngFor="let group of formGroup.get('formArray').controls; let i = index;"
           [formGroupName]="i">
           <input formControlName="...">
           <input formControlName="...">
             ...
      </div>
  </div>
</form>

但是如果我们只有一个formArray,我们可以简单地在formArray.controls上循环,并指出formGroup是我们迭代的变量。我们正在用[formGroup]="group"取代[formGroupName]="i"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57833823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档