Angular 如何将窗体控件添加到特定控件

Angular 如何将窗体控件添加到特定控件,angular,forms,Angular,Forms,如何将新表单控件或表单组添加到特定表单控件 public SaleRequestForm: FormGroup = new FormGroup({ SaleToPOIRequest: new FormGroup({ MessageHeader: new FormGroup({ MessageType: new FormControl(''), MessageClass: new FormControl(''),

如何将新表单控件或表单组添加到特定表单控件

public SaleRequestForm: FormGroup = new FormGroup({
        SaleToPOIRequest: new FormGroup({
          MessageHeader: new FormGroup({
            MessageType: new FormControl(''),
            MessageClass: new FormControl(''),
            MessageCategory: new FormControl(''),
            SaleID: new FormControl(''),
            POIID: new FormControl(''),
            ProtocolVersion: new FormControl(''),
            ServiceID: new FormControl(''),
          })
    })
我想象它会像这样

this.SaleRequestForm.controls.MessageHeader.addControl('test', new FormControl());

我一直在用谷歌搜索,但我似乎找不到答案

你的想法是对的,但如果你用FormGroup投射对象,就会出现角度,如下所示:


(this.SaleRequestForm.get(“saletoPaireRequest.MessageHeader”)作为FormGroup)。addControl(“test”,new FormControl())
我会一步一步地做:

const saleToPOIRequest: FormGroup = this.SaleRequestForm?.get("SaleToPOIRequest") as FormGroup;
const messageHeader: FormGroup = saleToPOIRequest?.get("MessageHeader") as FormGroup;
if (messageHeader) {
  const myNewFormControl = new FormControl(null);
  messageHeader.addControl("foo", myNewFormControl);
}

像这样的
this.SaleRequestForm.get(“SaleToPaireQuest”).get(“MessageHeader”).addControl(新表单控件('foo',null))
。另外,请在命名变量时使用camelCase,而不是PascalCase…@Random它可以工作,但我正在寻找一种更简单的方法。通过这种方式,我必须沿着树向下走,我只想针对这样一个表单控件:This.SaleRequestForm.controls.MessageHeader。这只是给我一个错误:无法读取undefined``的属性“addControl”。:/您需要将变量的名称更改为您的大小写:(This.objFormGroup.controls.MessageHeader作为FormGroup)。addControl(“测试”,new FormControl())我将更改上面的答案,以供您理解。我确实更改了答案,请不要担心:D.它给了我错误。此外,如果您希望它精确,您需要将其更改为this.saleRequestForm.controls,但我不在乎它是哪种方式。抱歉,现在我发现错误,我将再次更改并发送到这里xD