Angular에서 동적으로 검증되는 N 레벨 양식 배열
10000 단어 angulartypescriptjavascripttutorial
문제 설명
각각 N개의 나열된 항목이 있는 N개의 하위 양식이 있는 양식을 만들고 각 양식/양식 배열에서 특정 유효성 검사와 함께 전체 양식을 한 번에 제출합니다.
사용 사례
기본 정보는 물론 다양한 주소 정보, 소득 정보, 비용 정보, 학력 정보, 질병 정보 등을 포함하는 가족 정보에 대한 게이트웨이를 만들어야 한다고 가정해 보겠습니다. 또한 각 가정에는 여러 식구가 있고 식구마다 학력, 지출, 소득 통계가 다릅니다. 모든 양식에는 N개의 세부 정보와 개별 필드가 포함되며 데이터 입력 시 동적 유효성 검사가 포함됩니다.
전제 조건
Angular에서 반응형 양식 유효성 검사를 사용하여 N 레벨 FormArray 만들기: 단계별 자습서
1단계: 새 Angular 프로젝트 만들기
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
2단계: App.component.ts
이제 app.component.ts에서 먼저 간단한 양식을 만들고 아래 줄을 가져온 다음 유효성 검사와 함께 이와 같은 새 양식을 추가합니다
import { FormArray,FormBuilder,FormControl,FormGroup,Validators } from '@angular/forms';
3단계: App.component.html
npm start 명령을 실행하고 브라우저 localhost:4200/을 엽니다 - 다음과 같이 표시되며 해당 텍스트 상자를 터치하거나 제출 버튼을 누르면 유효성 검사가 실행되어야 합니다
4단계: 양식 배열
educationdata:
this.fb.array([])
5단계: 다음과 같이 FormArray 함수 선언
educationdata(): FormArray {
return this.myForm.get('educationdata') as FormArray;
}
6단계: 이와 같은 새 양식 만들기
neweducationdata(): FormGroup {
return this.fb.group({
schoolName: new FormControl(''),
degree: new FormControl(''),
fieldofstudy: new FormControl(''),
startDt: new FormControl(''),
endDt: new FormControl(''),
grade: new FormControl(''),
notes: new FormControl(''),
attachmenturl: new FormControl(''),
});
}
7단계: 새 배열 기능 추가
educationcon(index) {
this.educationList = this.myForm.get('educationdata') as FormArray;
const formGroup = this.educationList.controls[index] as FormGroup;
return formGroup;
}
8단계: 새 어레이 기능 제거
removeeducationdata(i: number) {
this.educationdata().removeAt(i);
}
9단계: 다음과 같은 유효성 검사 관리 추가
educationcon(index) {
this.educationList = this.myForm.get('educationdata') as FormArray; const formGroup = this.educationList.controls[index] as FormGroup;
return formGroup;
}
<table
class="table table-bordered"
formArrayName="educationdata"
>
<tr>
<th colspan="7">Add More Data:</th>
<th width="150px">
<button
type="button"
(click)="addeducationdata()"
class="btn btn-primary"
>
Add More
</button>
</th>
</tr>
<tr
*ngFor="let f of educationdata().controls; let i = index"
[formGroupName]="i"
>
<td>
School/College Name :
<input
type="text"
formControlName="schoolName"
class="form-control"
/>
</td>
<td>
Degree:
<select formControlName="degree" class="form-control">
<option value="">Select Degree</option>
<option value="SCHOOL">School Degree</option>
<option value="COLLEGE">Some College</option>
<option value="BACHELOR">Bachelor Degree</option>
<option value="MASTER">Master Degree</option>
<option value="PHD">PhD Degree</option>
</select>
</td>
<td>
Field Of Study:
<input
class="form-control"
type="text"
formControlName="fieldofstudy"
/>
</td>
<td>
Start Date:
<input
class="form-control"
type="date"
formControlName="startDt"
/>
</td>
<td>
End Date:
<input
class="form-control"
type="date"
formControlName="endDt"
/>
</td>
<td>
Grade:
<input
class="form-control"
type="text"
formControlName="grade"
/>
</td>
<td>
Notes:
<textarea
class="form-control"
formControlName="notes"
></textarea>
</td>
<td>
<button
(click)="removeeducationdata(i)"
class="btn btn-danger"
>
Remove
</button>
</td>
</tr>
</table>
이제 중첩 배열에 유효성 검사를 추가해 보겠습니다.
1단계: 다음과 같은 표시 메시지 추가
validation_edumessage = {
schoolName: [{ type: 'required', message: 'School Name is required' }],
degree: [{ type: 'required', message: 'Degree is required' }],
startDt: [{ type: 'required', message: 'Start Date is required' }]};
2단계: 그룹에서 교육에 유효성 검사 추가
neweducationdata(): FormGroup {
return this.fb.group({
schoolName: new FormControl('', [Validators.required]),
degree: new FormControl('', [Validators.required]),
fieldofstudy: new FormControl(''),
startDt: new FormControl('', [Validators.required]),
endDt: new FormControl(''),
grade: new FormControl(''),
notes: new FormControl('')}); }
3단계: 다음과 같이 양식 HTML에 유효성 검사 추가
<input type="text" formControlName="schoolName"
class="form-control"
[ngClass]="{'is-invalid':
educationcon(i).controls['schoolName'].errors &&
(educationcon(i).controls['schoolName'].dirty || educationcon(i).controls['schoolName'].touched)}"/>
<div *ngFor="let validation of validation_edumessage.schoolName"
class="invalid-feedback">
<div *ngIf="educationcon(i).controls['schoolName'].hasError(validation.type)
&& (educationcon(i).controls['schoolName'].dirty || educationcon(i).controls['schoolName'].touched)">
</div> </div>
당신에게!
샘플 소스 코드를 찾고 계십니까? 여기 있습니다: GITHUB .
지금은 그게 다야. 오늘 Angular를 사용하여 반응형 양식 유효성 검사로 N 레벨 FormArray를 만드는 방법을 배웠습니다.
마지막으로 대규모 애플리케이션이나 엔터프라이즈 소프트웨어를 다루는 경우 전문가의 도움을 받는 것이 좋습니다. 전문적인 도움의 손길을 찾고 있다면 엔터프라이즈 소프트웨어 작업 경험이 최소 5년 이상인 Samarpan Infotech 및 hire Angular developers에 문의하십시오.
Reference
이 문제에 관하여(Angular에서 동적으로 검증되는 N 레벨 양식 배열), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/samarpaninfotech/n-level-form-array-with-validation-dynamically-in-angular-335a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)