it-swarm.dev

폼에 새 FormGroup 또는 FormControl을 추가하는 방법

Angular form (으)로 생성됨)에 다음 FormBuilder이 있습니다.

constructor(private fb: FormBuilder) {
    this.myForm = fb.group({
        'name': ['', [Validators.required],
        'surname': ['', [Validators.required],
        'email': ['', [validateEmail]],
        'address': fb.group({
            'street': [''],
            'housenumber': [''],
            'postcode': ['']
        }, { validator: fullAddressValidator })
    });
}

FormControl 또는 new FormGroup 같은 새 필드를 프로그래밍 방식으로 myForm에 추가하는 방법이 있습니까?

주문형 또는 일부 조건에서 새 필드를 추가하려는 경우 constructor에서 처음 생성 된 동일한 양식에 항목을 추가하는 방법은 무엇입니까?

19
smartmouse

documentation 에 따라 FormGroup 클래스의 addControl 메서드를 사용할 수 있습니다

따라서 다음과 같이 할 수 있습니다.

this.myForm.addControl('newcontrol',[]);
28
ranakrunal9

@ ranakrunal9가 말한 것을 추가합니다.

AddControl과 함께 유효 기 를 사용하려면 다음을 수행하십시오.

this.myForm.addControl('newControl', new FormControl('', Validators.required));

다음 가져 오기를 추가하는 것을 잊지 마십시오.

import {FormControl} from "@angular/forms";

AddControl에 대한 참조 : https://angular.io/api/forms/FormGroup#addControl

FormControl에 대한 참조 : https://angular.io/api/forms/FormControl

17
Stas Sorokin

제 생각에는이 목적을 위해 중간 변수를 사용할 수 있습니다. 다음 예를 살펴보십시오.

  constructor(private fb: FormBuilder) {
    let group = {
      'name': ['', [Validators.required]],
      'surname': ['', [Validators.required]],
      'email': ['', [Validators.required]]
    };

    let middlename = true;

    if(middlename) {
      group['middlename'] = ['', [Validators.required]];
    }

      this.myForm = fb.group(group);
    }

또한 구성 요소 생성자 대신 ngOnInit 후크에서 양식 시작을 전송하는 것이 좋습니다.

7
Boris Siscanu