Angular의 반응성 FormArray 예제
FormArray란?
FormArray는 FormGroup, FormControl 또는 다른 FormArray일 수 있는 AbstractControl 컬렉션을 관리하는 역할을 합니다. FormArray는 FormControl 및 FormGroup과 함께 Angular에서 양식을 정의하는 데 사용되는 세 가지 기본 빌딩 블록 중 하나입니다.
참고: 드롭다운에는 Angular Syncfusion을 사용했습니다. 해당 패키지를 설치하고 패키지를 가져오십시오. 당신은 또한 다른 패키지를 사용할 수 있습니다
ㅏ. app.module.ts 파일에서 FormsModule 및 ReactiveFormsModule을 가져옵니다.
비. 이제 구성 요소 파일에서 다음과 같은 FormGroup 변수를 추가합니다.
addMemberItemInputForm = {} as FormGroup;
씨. 다음과 같은 생성자에서 FormBuilder를 호출합니다.
private formBuilder: FormBuilder
디. 이제 내가 createAddMemberItemInputForm이라는 함수를 사용한 것처럼 함수 또는 생성자에서 호출하여 양식 컨트롤을 초기화합니다. 컨트롤에 필요한 유효성 검사를 추가합니다. 여기서 itemDetails는 아래 코드에서 양식 배열로 선언되었으며 5개 행만 추가할 수 있는 양식 배열에 대한 공통 유효성 검사를 추가했습니다. 제거하거나 변경할 수 있습니다.
createAddMemberItemInputForm(){
this.addMemberItemInputForm = this.formBuilder.group({
memberName: ['', Validators.required],
itemType: ['', Validators.required],
itemDetails: this.formBuilder.array(
[this.createEmpFormGroup()],
[Validators.required, Validators.maxLength(5)])
});
}
이자형. 이제 getter를 사용하여 객체 속성을
createAddMemberItemInputForm()
의 함수에 바인딩합니다. memberName 객체 속성은 get memberName()
라는 함수에 바인딩됩니다. get memberName() {
return this.addMemberItemInputForm.get('memberName');
}
에프. 이와 같이 모든 컨트롤에 대해 getter 함수를 만듭니다.
g. 이제 양식 배열에는 다음 코드와 같이 양식 배열의 컨트롤을 초기화하는 데 사용되는
this.createEmpFormGroup()
라는 함수가 있습니다.createEmpFormGroup(){
return this.formBuilder.group({
itemName: ['', [Validators.required]],
quantity: ['', [Validators.required, Validators.max(5)]],
price: ['', [Validators.required]]
})
}
시간. 이제 다음과 같은 양식 배열 컨트롤에 대한 추가 및 삭제 행을 만듭니다.
addEmployee() {
let newMem = this.createEmpFormGroup();
this.itemDetails.push(newMem);
}
deleteEmployee(i: number) {
this.itemDetails.removeAt(i);
}
나. HTML 측으로 와서 formGroup 및 formControlName을 추가합니다.
제이. 외부 양식 컨트롤 추가
<div class="col-6">
<label class="form-label">Enter Member Name</label>
<input type="text" class="form-control" placeholder="Member Name" formControlName="memberName">
<label *ngIf="memberName?.invalid && isValidFormSubmitted != null && !isValidFormSubmitted" class="error">
Team name is required.
</label>
</div>
케이. 양식 배열의 경우 추가
<tbody formArrayName="itemDetails">
<tr *ngFor="let item of itemDetails.controls; let i = index" [formGroupName]="i">
<td>
<input type="text" class="form-control" placeholder="Enter Item Name" formControlName="itemName">
<label *ngIf="itemDetails.controls[i].get('itemName')?.errors?.['required'] && isValidFormSubmitted != null && !isValidFormSubmitted" class="error">
Employee name required.
</label>
</td>
<td>
엘. 이제 이 단계에 도달하면 적절한 유효성 검사를 통해 양식 배열을 거의 구현했습니다.
중. 실시간 미리보기가 포함된 전체 코드는 Github에서 참조할 수 있습니다.
GitHub에서 사용 가능한 코드:- [( https://github.com/justinthadathil/AngularFormArray ]
실시간 미리보기 - [( https://justinthadathil.github.io/AngularFormArray/ ]
Reference
이 문제에 관하여(Angular의 반응성 FormArray 예제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/justinthadathil/formarray-in-angular-1clo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)