각 사용자 정의 유효성 검사에 대한 FormArray 필드(반응성 Form)

0

질문

나는 새로운 각도 및 확인하고 싶다면 나는 어떻게 갈 수행에 대한 사용자 정의 필드에 대한 검증 FormArray?

이 FormArray 은 동적할 수 있는 푸시하거나 제거 FormGroup 항목입니다. 이 FormGroup 로 구성되어 있 필드 1,필드 2,필드 3 은. 는 경우 하나의 필지 않 null,다른 필드를 설정해야와 검사기.필요합니다. 양식이 유효하는 경우 모든 분야 중 하나 null 또는 채워집니다.

감사합니다.

아래 샘플 코드:

formA!: FormGroup;

initializeForm(): void {
    this.formA = this.fb.group({
      item1: this.fb.array([this.createItem1()]),
      item2: this.fb.array([this.createItem2()]),
    });
  }

createItem1(): FormGroup {
   return this.fb.group({
       field1: null,
       field2: null,
       field3: null,
   });
}

1

최고의 응답

0

려고 합니다.

createItem1(): FormGroup {
  const fg = this.fb.group({
      field1: null,
      field2: null,
      field3: null,
  });
   
  const validatorFn = (control: AbstractControl): { [key: string]: any } | null => {
    const obj = fg.getRawValue();
     
    if (obj.field1 || obj.field2 || obj.field3) {
      return Validators.required(control);
    }
     
    return null;
  };
   
  for (const control of Object.values(fg.controls)) {
    control.setValidators(validatorFn);
  }

  return fg;
}

또한 당신은 당신을 실행해야 합니다 updateValueAndValidity() 에 대한 모든 컨트롤 때 키 눌렀습니다.

2021-11-25 00:55:40

안녕하세요,저는 발생 아래에서'fg.컨트롤하려고 할 때이다. 가능한 조언을? 형'{[주요:string]:AbstractControl;}'있어야 합'[징이다.반복]()'에서는 반복기를 반환합니다.ts(2488)
braveducky

수정 나의 대답이다. 다시 확인하십시오.
N.F.

안녕하세요,도움을 주셔서 감사합니다. 내가 어떤 변경에 맞게 사용할 경우 추가 조건이 명확한 유효성 검증기 때 필요하지 않습니다. 전반적으로,그것을 밖으로 작동합니다.
braveducky

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................