【问题标题】:Angular 2 Get Dynamic FormGroup nameAngular 2获取动态FormGroup名称
【发布时间】:2017-12-08 09:43:46
【问题描述】:

https://angular.io/api/forms/FormGroupName 这里如何获取 FormGroupName。

如果 FormGroupName 是动态的,如何获取/修补/更新值?

    <div class="row" *ngFor="let itemrow of searchForm.controls.addresses.controls; let ind=index" [formGroupName]="ind">
   <input class="form-control" formControlName="name">
   <input class="form-control" formControlName="time">
</div>

searchForm.value 对象:

"addresses": [
    {
      "address": "",
      "name": 0,
      "time": 0,
 },
    {
      "address": "",
      "name": 0,
      "time": 0,
    }
  ]

如何更新 currentGFormGroupName 中的输入值?

【问题讨论】:

  • 请提供您的 JSON。

标签: angular formgroups


【解决方案1】:

您可以在代码中创建新的表单组

组件

export class AppComponent {
  addresses = [
    {
      address: 'aa',
      name: 'aa',
      time: 'aa'
    },
    {
      address: 'bb',
      name: 'bb',
      time: 'bb'
    }
  ];

  formGroup: FormGroup;
  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.formGroup = new FormGroup({});
    let addressGroup = new FormGroup({});

    this.addresses.map((group, index) => {
      const name = 'group-' + index.toString();
      const formGroup = this.fb.group({
        address: [group.address],
        name: [group.name],
        time: [group.time]
      });
      addressGroup.addControl(name, formGroup);
    })

    this.formGroup.addControl('addresses', addressGroup);
  }

}

模板

<form [formGroup]="formGroup">
  <div formGroupName="addresses">
    <div *ngFor="let address of addresses; let i = index">
      <div formGroupName="{{'group-'+i}}">
        <input type="text" formControlName="address"/>
        <input type="text" formControlName="name"/>
        <input type="text" formControlName="time"/>
      </div>
    </div>
  </div>
</form>

【讨论】:

  • 正是我们所做的,没有 formControlName 不会传播到子视图“路径”属性...
猜你喜欢
  • 2016-11-19
  • 2017-04-15
  • 2017-09-22
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多