2017-09-04 23 views
0

我有一个列表,简单 - string[]。我为该列表的每个项目生成复选框。然后,我创建FormControls:Angular - 将动态创建的FormControls添加到FormGroup中

this.list.map((item) => { 
    this.form.addControl(item, new FormControl(false, Validators.required)) 
}) 

但我想添加一个Validator控制选中的复选框的允许次数,所以我想我能做到这一点,如果我搬完FormControlsFormGroup,所以我尝试类似:

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)) 
     }) 

但是,这给:

提供的参数不匹配,通话对象的任何签名。 属性'checkboxGroup'在'FormGroup'类型上不存在。

我应该怎么做?

+0

为什么'this.form.checkboxGroup'?这完全无效。这就是为什么你有错误。 –

+0

'this.form.get('checkboxGroup')。addControl(...)' – developer033

+0

谢谢@ developer033,但现在我得到了 - 属性'addControl'不存在于'AbstractControl'类型中......这很奇怪,因为我提供'checkboxGroup'的FormGroup类型... –

回答

1

访问checkboxGroupthis.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对于上述

https://plnkr.co/edit/nxo52y?p=preview

+0

Thx,但已经试过了.. –

+0

@ user8558489你的错误或输出是什么? –

+0

与使用点时相同 –

相关问题