如何从动态形式中获取价值

时间:2019-02-26 13:41:14

标签: angular typescript dynamicform

如何从角度动态形式获取值 这是我的代码: 我的html

<form (ngSubmit)="PreviewData()" [formGroup]="DataForm">
<div class="form-group row" *ngFor="let data of FormData;" >
        <label class="col-md-2 col-form-label" >{{data.name}}</label>
        <div class="col-md-10">
          <input type="text" class="form-control"  name="{{data.name}}">
        </div>
      </div>
<button class="btn btn-primary float-right" type="submit" >Preview</button>
</form>

在我的打字稿文件中

PreviewData() {
    this.payLoad = JSON.stringify(this.DataForm.value);
}

如何从ts文件的组数据中获取值

2 个答案:

答案 0 :(得分:1)

使用函数添加formControl。

import { Component, OnInit, ViewChild } from '@angular/core';
import { FormGroup, FormArray, Validators, FormControl } from '@angular/forms';

@Component({
  selector: 'app-sample-reactive-form',
  templateUrl: './sample-reactive-form.component.html',
  styleUrls: ['./sample-reactive-form.component.css']
})

export class SampleReactiveFormComponent
{

  payLoad: any;
  FormData: any;
  DataForm: FormGroup = new FormGroup({});

  constructor()
  {
    this.FormData = [{
      name:'a'
    },{
      name:'b'
    }]

    this.DataForm = this.generateFormControls(this.FormData);
 }

    generateFormControls(formData: any)
    {
        let tempGroup: FormGroup = new FormGroup({});
        formData.forEach(i=>{
            tempGroup.addControl(i.name, new FormControl(''))
        })
        return tempGroup;
    }

    PreviewData() 
    {
         this.payLoad = JSON.stringify(this.DataForm.value);
    }
}

答案 1 :(得分:0)

您可以使用以下方法从FormGroup中获取单个数据值:

this.DataForm.get('<enter control name>').value

例如,如果您的表单控件是“电子邮件”:

this.DataForm.get('email').value

或者,您可以使用以下方法将整个表单值作为对象获取:

this.DataForm.getRawValue()