Динамічно додайтеControl до formgroup Angular 5


78

Спроба динамічно додати новий запис formControl до моєї формиGroup у Angular.

method() {
  this.testForm.addControl('new', ('', Validators.required));
}

Чи можна це зробити?


це також може допомогти: stackoverflow.com/questions/55334283/…
Самотній

Як Siro відповів на ваше запитання, ви можете використовувати метод addControl, щоб додати нові входи до вашої групи форм. У мене є невеликий проект, який вивчав динамічні форми. Сподіваюся, які будуть корисними. stackblitz.com/edit/angular-eypxbq?embed=1&file=src/app/…
Майкл Чарльз

Відповіді:


163

Звичайно, але другими параметрами має бути екземпляр FormControl. Щось на зразок:

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

Ви також можете динамічно додавати валідатори, якщо хочете, з setValidatorsметодом.

Більше інформації тут: https://angular.io/api/forms/FormGroup#addControl


38

Якщо ви використовуєте FormBuilderдля своєї форми, ви можете також використовувати це для додавання елемента керування:

constructor(private fb: FormBuilder) { }
    
method() {
  this.testForm.addControl('new', this.fb.control('', Validators.required));
}


0
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
@Component({
  selector: 'app-component-name',
  templateUrl: './component-name.component.html',
  styleUrls: ['./component-name.component.scss']
})
export class ComponentName implements OnInit {

    formGroup: FormGroup;        
    constructor(private formBuilder: FormBuilder) {}

    ngOnInit() {
       this.formGroup = this.formBuilder.group({
        firstName: new FormControl('', Validators.required),
        lastName:  new FormControl('', Validators.required),
      });    
    }
    
    // Add single or multiple controls here
    addNewControls(): void {
      this.formGroup = this.formBuilder.group({
         ...this.formGroup.controls,
         email: ['', Validators.required],
         phone: ['', Validators.required]
      });
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.