สี่เหลี่ยมกำหนดเองสำหรับการตรวจสอบ FormArray ช่องข้อมูล(Reactive รูปแบบ)

0

คำถาม

ฉันเป็นคนใหม่ต้องสี่เหลี่ยมและอยากจะเช็คได้ยังไงฉันไปเรื่องการแสดงกำหนดเองสนามสำหรับการตรวจสอบ FormArray?

ที่ FormArray เป็นปรับอัตโนมัติที่คุณสามารถผลักหรือลบ FormGroup รายการ. ที่ FormGroup ต้องใช้ field1,field2,field3. ถ้าคนใดคนหนึ่งทุ่งไม่ใช่โพรโทคอล aimcomment อีกคนช่องข้อมูลควรจะตั้งค่ากับ validators.ต้องการ. แบบฟอร์มนี้จะถูกใช้งานหาทุกช่องข้อมูลเป็นเหมือนกัโพรโทคอล aimcomment หรือเติมเต็ม.

ขอบคุณ

ด้านล่างนี้เป็นรหัสตัวอย่าง:

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.ควบคุม'เมื่อพยายามเรื่องนี้ เป็นไปได้เพื่อให้คำีปรึกษา? ประเภท'{[กุญแจ:ข้อความ]:AbstractControl;}'ต้องเป็น'[สัญลักษณ์.iterator]()'วิธีการนั่นกลับมาเป็น iterator.ts(2488)
braveducky

ซ่อมคำตอบของฉันแล้ว โปรดตรวจสอบอีกครั้ง
N.F.

สวัสดีค่ะขอบคุณสำหรับความช่วยเหลือ ฉันทำการเปลี่ยนแปลงบางต้องใส่ของใช้คดีและถูกเพิ่มเงื่อนไขเพิ่มเติมที่จะเคลียร์ validators ตอนที่ไม่ต้องการ. โดยรวมแล้ว..มันทำงานออกมาในท้ายที่สุด
braveducky

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่