Tự động addControl vào formgroup Angular 5


78

Cố gắng thêm động một mục nhập formControl mới vào formGroup của tôi trong Angular.

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

Điều này có thể được thực hiện?


điều đó cũng có thể hữu ích: stackoverflow.com/questions/55334283/…
Lonely vào

Giống như Siro đã trả lời câu hỏi của bạn, bạn có thể sử dụng phương thức addControl để thêm đầu vào mới vào nhóm biểu mẫu của mình. Tôi có một dự án nhỏ đã nghiên cứu các dạng động. Tôi hy vọng điều đó sẽ hữu ích. stackblitz.com/edit/angular-eypxbq?embed=1&file=src/app/…
Michael Charles

Câu trả lời:


162

Chắc chắn, nhưng các tham số thứ hai phải là một cá thể FormControl. Cái gì đó như:

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

Bạn cũng có thể thêm trình xác thực động nếu bạn muốn với setValidatorsphương pháp này.

Thông tin thêm tại đây: https://angular.io/api/forms/FormGroup#addControl


38

Nếu bạn đang sử dụng FormBuildercho biểu mẫu của mình, bạn cũng có thể sử dụng điều đó để thêm điều khiển:

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

2

sử dụng đơn giản:

  this.testForm.addControl('new', this.fb.group({
      name: ['', 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]
      });
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.