Forms 在另一个组件中的表单组内部创建新表单组,而不是在Angular 2中初始化表单的组件中
尝试在Angular 2中的现有表单组内创建新表单组。我用空formGroup“type”在一个组件中定义了主窗体。我将表单组“类型”传递给另一个组件。在该组件中,我想创建一个名为“time”的新formGroup,但它不起作用。我在FormGroup类中找不到任何用于创建新组的方法。只有用于将控件添加到FormGroup的方法 addControl方法有效,但下一个方法无效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
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
。这个答案应该完全修改,以便工作。。。