Angular 角度-将动态创建的FormControls添加到FormGroup中

Angular 角度-将动态创建的FormControls添加到FormGroup中,angular,angular-forms,Angular,Angular Forms,我有一个简单的列表-string[]。我为列表中的每个项目生成复选框。然后我创建表单控件: this.list.map((item) => { this.form.addControl(item, new FormControl(false, Validators.required)) }) 但是我想添加一个验证器来控制允许的复选框数量,因此我假设如果我将这些表单控件移动到表单组中,我就可以这样做,所以我尝试了以下方法: constructor(private fb:Form

我有一个简单的列表-
string[]
。我为列表中的每个项目生成复选框。然后我创建表单控件:

this.list.map((item) => {
  this.form.addControl(item, new FormControl(false, Validators.required))
})  
但是我想添加一个
验证器
来控制允许的复选框数量,因此我假设如果我将这些
表单控件
移动到
表单组
中,我就可以这样做,所以我尝试了以下方法:

  constructor(private fb:FormBuilder) { 
        this.form = this.fb.group({
          input1Ctrl: ['', Validators.required],
          input2Ctrl: ['',Validators.required],
          checkboxGroup : new FormGroup({})   
        })         
        this.list.map((item) => {
          this.form.checkboxGroup.addControl(item, new FormControl(false, Validators.required))
        })  
但这给了:

提供的参数与调用目标的任何签名都不匹配。 类型“FormGroup”上不存在属性“checkboxGroup”


我应该怎么做?

访问
checkboxGroup
就像
这个.form.controls['checkboxGroup']

  constructor(private fb:FormBuilder) { 
            this.form = this.fb.group({
              input1Ctrl: ['', Validators.required],
              input2Ctrl: ['',Validators.required],
              checkboxGroup : new FormGroup({})   
            })         
            this.list.map((item) => {
              this.form.controls['checkboxGroup'].addControl(item, new FormControl(false, Validators.required))
            })
编辑:为上述内容创建plunker


您在这里使用的是
FormGroup
而不是formBuilder的
group
方法

看起来你会这样设置:

this.form = this.fb.group({
   checkboxGroup: this.fb.group({})
})
访问FormBuilder的
FormGroup
对我来说都很有用,就像:
this.form.get('checkboxGroup')
及 `this.form.controls['checkboxGroup']


请参见

为什么
此.form.checkboxGroup
?这是完全无效的。这就是出现错误的原因。
this.form.get('checkboxGroup').addControl(…)
谢谢@developer033,但是现在我得到了-attribute'addControl'在类型'AbstractControl'上不存在。。。这很奇怪,因为我为
checkboxGroup
…@user8558489
(this.form.get('checkboxGroup')提供了
FormGroup
类型作为FormGroup)。addControl(…)
@user8558489-Perfect(只需存储
(this.form.get('checkboxGroup'))作为本地变量中的FormGroup
,然后是
addControl
。请随意发布答案:)与使用dot@user8558489我已经创建了一个plunker。你可以检查控制台。没有问题。它工作正常。你在这里使用的是
FormGroup
,而不是formBuilder的
fb.FormGroup
,因此它是不同的。请参阅