这应该很简单,但我发现它非常令人生畏 .

我有一个带有嵌套表单组件的Angular2(RC.5)表单 . 我不是百分百肯定我做得对,但它现在正在工作......

(注意:名称已更改,样本已简化以保护客户端)

嵌套表单控件:

@Component({
  selector: "nested-form",
  templateUrl: "Content/templates/shared/nestedForm.htm"
})
export class NestedFormComponent extends FormGroup implements OnInit {
  // Implementation omitted
}

主要表格:

@Component({
  selector: "main-form",
  templateUrl: "Content/templates/core/mainForm.htm",
  directives: [NestedFormComponent]
})
export class MainFormComponent implements OnInit {

  public formObj: FormGroup;

  constructor(
    private fb:FormBuilder
  ) { }

  ngOnInit() {
    // Create our form group
    this.formObj= this.fb.group({
        myNested: this.fb.array([new NestedFormComponent()])
    });        
  }

  // Rest of implementation omitted
}

因此除了重置表单(客户端要求之一)之外,这适用于所有内容 . 我尝试在父表单上调用reset,我尝试通过执行以下操作在嵌套表单上调用reset:

private resetNestedForm() {
    let nested = <NestedFormComponent>(
      <FormArray>this.formObj.controls["myNested"])
      .controls[0];
    nested.reset();
  }

我已经尝试在嵌套控件上实现我自己的“重置”方法并手动重置控件,但是当我到达从父控件数组返回的嵌套表单对象上的方法时,嵌套表单上没有任何控件对象被实例化 - 我知道并非如此,因为我从我实现的嵌套表单的 Launcher 中获取数据(未显示) .

那么有没有人能够成功地将 NESTED 表单控件重置为原始状态?我怎样才能做到这一点?