Forms 在另一个组件中的表单组内部创建新表单组,而不是在Angular 2中初始化表单的组件中

Forms 在另一个组件中的表单组内部创建新表单组,而不是在Angular 2中初始化表单的组件中,forms,angular,dynamic,Forms,Angular,Dynamic,尝试在Angular 2中的现有表单组内创建新表单组。我用空formGroup“type”在一个组件中定义了主窗体。我将表单组“类型”传递给另一个组件。在该组件中,我想创建一个名为“time”的新formGroup,但它不起作用。我在FormGroup类中找不到任何用于创建新组的方法。只有用于将控件添加到FormGroup的方法 addControl方法有效,但下一个方法无效 this.typeForm.addControl("gender", new FormControl('', Valid

尝试在Angular 2中的现有表单组内创建新表单组。我用空formGroup“type”在一个组件中定义了主窗体。我将表单组“类型”传递给另一个组件。在该组件中,我想创建一个名为“time”的新formGroup,但它不起作用。我在FormGroup类中找不到任何用于创建新组的方法。只有用于将控件添加到FormGroup的方法

addControl方法有效,但下一个方法无效

this.typeForm.addControl("gender", new FormControl('', Validators.required));
this.typeForm['time'] = this.fb.group({});
FormBuilder应该创建如下内容:

{ 
  "name": "", 
  "type": {
           "gender": "",
           "time": {
                   }
          }
}

你知道我该怎么做吗?

我想你可以试试这样做:

ngOnInit() {
    this.form = this.fb.group({
            name: [''],
            type: this.typeOptions()
        });
}

typeOptions(): FormGroup {
       return this.someService.getTypes().subscribe(
            res => {
                this.options = res.body;
            let obj: any = {};

            for (let option of options) {
                 let control: FormControl = new FormControl(option.value || '');
                 obj[option.title] = control;
            }

            return  new FormGroup(obj);
        }
    );
 }

感谢您发送了一个新的想法如何解决这个问题。最后,我用addControl方法实现了它,并将newformgroup作为参数传递。注意,正如所写的那样,
typeOptions
方法返回一个
可观察的
,而不是
FormGroup
。这个答案应该完全修改,以便工作。。。