मेरे पास एक विधि है जो किसी प्रपत्र समूह में किसी आइटम मान के आधार पर सत्यापन लागू करती है। यह विधि प्रपत्र समूह के सभी आइटम्स पर लागू होती है। मुझे इस पद्धति से बाहर किए जाने के लिए प्रपत्र समूह में अंतिम आइटम की आवश्यकता है, लेकिन यह पता नहीं लगा सकता कि इसे कैसे संशोधित किया जाए।

मेरी टीएस फ़ाइल में

 ngOnInit() {
   this.initForm();
 }

 initForm() {
  this.sectionSix = this.formBuilder.group({
    medicaidOrSssi: [''],
    snap: [''],
    freeOrReducedPriceLunch: [''],
    tanf: [''],
    wic: [''],
    noneOfTheAbove: [''],
    dislocatedWorker: [''],
  }, { validator: this.selectAtleastOne });

 }

मुझे जिस विधि को बदलने की आवश्यकता है वह यह है

selectAtleastOne(c: FormGroup) {
  const selectAtleastOne = Object.values(c.value).some(Boolean);
  return selectAtleastOne ? null : {
    selectAtleastOne: {
    requiredTrue: true,
    valid: false,
    error: true
    }
  };
}

प्रपत्र समूह में पहले 6 आइटम चेक बॉक्स हैं और अंतिम आइटम ड्रॉपडाउन है। मैं अंतिम प्रश्न को किसी अन्य प्रपत्र समूह में नहीं ले जा सकता, इसे इसी में रहने की आवश्यकता है।

समस्या यह है कि कम से कम एक चेकबॉक्स का चयन करने की आवश्यकता है। यदि कोई नहीं चुना जाता है, तो एक सत्यापन संदेश पॉप अप होता है। जिस तरह से यह अब व्यवहार कर रहा है, अगर मैं किसी भी चेकबॉक्स का चयन नहीं करता हूं, और ड्रॉपडाउन (फॉर्म समूह में अंतिम आइटम) से एक मान का चयन करता हूं, तो यह चेकबॉक्स को मान्य मानता है, भले ही वे सभी खाली हों।

1
ghostagent151 19 जुलाई 2019, 20:52

1 उत्तर

सबसे बढ़िया उत्तर

आप अपने ड्रॉपडाउन फ़ील्ड को c.value से हटा सकते हैं और फिर बूलियन की जांच कर सकते हैं। मुझे लगता है कि यह काम करेगा।

ये कोशिश करें।

selectAtleastOne(c: FormGroup) {
  const { ['dislocatedWorker']: dd, ...allCheckboxes } = c.value;
  const selectAtleastOne = Object.values(allCheckboxes).some(Boolean);
  return selectAtleastOne ? null : {
    selectAtleastOne: {
    requiredTrue: true,
    valid: false,
    error: true
    }
  };
}
1
Jay Shukla 19 जुलाई 2019, 21:44