Angular响应式表单无法在ngFor模板循环中使用formControlName设置值
创始人
2024-10-30 07:30:22
0

在Angular中,当使用响应式表单时,在ngFor模板循环中使用formControlName设置值可能会导致问题。这是因为ngFor会创建多个实例,这些实例共享相同的formControlName,这会导致冲突。

解决这个问题的一种方法是使用formGroupName。通过使用formGroupName,我们可以创建一个嵌套的FormGroup,并在ngFor循环中为每个实例设置唯一的formGroupName。

下面是一个示例代码,演示了如何解决这个问题:

在组件类中定义表单控件和表单组:

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

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.css']
})
export class MyComponentComponent implements OnInit {
  myForm: FormGroup;

  constructor(private formBuilder: FormBuilder) { }

  ngOnInit() {
    this.myForm = this.formBuilder.group({
      items: this.formBuilder.array([])
    });
  }

  addItem() {
    const item = this.formBuilder.group({
      name: '',
      value: ''
    });

    this.items.push(item);
  }

  get items() {
    return this.myForm.get('items') as FormArray;
  }
}

在模板中使用formGroupName和formControlName设置值:

在上面的示例中,我们创建了一个items数组,每个数组元素都是一个嵌套的FormGroup。在ngFor循环中,我们使用[i]来设置每个实例的唯一formGroupName。

这样,我们就可以在ngFor循环中正确地使用formControlName设置值,而不会导致冲突。

相关内容

热门资讯

必备教程!wepoke软件(w... 必备教程!wepoke软件(wepokeai机器人)WepoKe(原来真的有挂);玩家必备必赢加哟《...
微扑克ai辅助!微扑克辅助器,... 微扑克ai辅助!微扑克辅助器,微扑克wpk辅助软件(总是真的是有挂)1、完成微扑克透视辅助安装,帮助...
总算明白!老友汇麻将有挂吗(辅... 总算明白!老友汇麻将有挂吗(辅助挂)真是真的是有挂(2023已更新)(哔哩哔哩)1、操作简单,无需注...
WePoKe透视挂!wepok... WePoKe透视挂!wepoke辅助德之星(透视)WEpoke(原来真的有挂);1.WEpoke a...
微扑克ai机器人!微扑克ai辅... 您好,微扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这款游戏中...
记者揭秘!白金岛三打哈有挂吗(... 记者揭秘!白金岛三打哈有挂吗(辅助挂)都是是真的有挂(2021已更新)(哔哩哔哩);1、每一步都需要...
攻略教程!wepoke有科技(... 攻略教程!wepoke有科技(WePoKe外 挂)wePoKe(就是真的有挂);揭秘教程安装方法样式...
微扑克wpk透视辅助!微扑克可... 自定义微扑克系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不管你是想分享...
信息共享!乐乐上海麻将有没有挂... 信息共享!乐乐上海麻将有没有挂(透视)原来真的是有挂(2020已更新)(哔哩哔哩)小薇(透视辅助)致...
微扑克辅助软件!微扑克app发... 微扑克辅助软件!微扑克app发牌规律,WPK竟然是有挂,黑科技教程(有挂秘籍)1、完成微扑克透视辅助...