मेरे पास ReactiveFormsModule के आधार पर फॉर्म सत्यापन निम्नानुसार है। हकीकत में, कुछ और मान्य हैं और प्रत्येक के लिए सत्यापनकर्ताओं की सूची लंबी है (हालांकि मूल रूप से प्रत्येक के लिए समान है)।

constructor(private builder: FormBuilder) {
  this.form = builder.group({
    "firstName": ["", [Validators.required, Validators.minLength(3)]],
    "lastName": ["", [Validators.required, Validators.minLength(3)]]
  });
}

यह मुझे परेशान करता है कि यह बहुत क्रियात्मक है और मुझे आश्चर्य है कि क्या सभी सत्यापनकर्ताओं को एक साथ तोड़ने का एक साफ तरीका है और किसी भी तरह इसका एक, एकल उदाहरण होने दें।

0
user1675891 24 अगस्त 2017, 18:41

2 जवाब

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

जिस तरह से मैं देखता हूं, आपके पास परेशान करने के दो आयाम हैं - फ़ील्ड का सेट मान्य (ऊर्ध्वाधर आकार) और सत्यापन का सेट (क्षैतिज आकार)? जबकि @ n00dl3 दोनों आयामों में कटौती (और आलोचना) पर चर्चा करता है, मैं दृढ़ता से सुझाव देता हूं कि आप केवल बाद वाले (यानी क्षैतिज) पर काम करें।

constructor(private builder: FormBuilder) {
  const validation = [Validators.required, Validators.minLength(3)];
  this.form = builder.group({
    "firstName": ["", validation],
    "lastName": ["", validation]
  });
}

इसके अलावा, मुझे संदेह है कि आप उस बिंदु पर पहुंचेंगे जहां पैरामीटरयुक्त सत्यापन की आवश्यकता है। ऐसे मामले में, आप ऐसे फ़ंक्शन पर स्विच करने पर विचार कर सकते हैं जो उपयुक्त सत्यापन लाता है।

constructor(private builder: FormBuilder) {
  this.form = builder.group({
    "firstName": ["", validation(1)],
    "lastName": ["", validation(2)]
  });
}

validation(type: number) : Validations {
  if(type === 1)
    return [Validations.required];
  return [Validators.required, Validators.minLength(3)];
}
0
Konrad Viltersten 24 अगस्त 2017, 23:28

यदि आपके फ़ील्ड में समान सत्यापनकर्ता हैं तो आप अपनी चाबियों के लिए केवल एक सरणी का उपयोग कर सकते हैं और इसे इस तरह कम कर सकते हैं:

const fields=["firstName","lastName"]
let myGroup = fields.reduce((group,field)=>{
  return group[field]=["",[Validators.required,Validators.minLength(3)]]
},{} as {[k:string]:any});

this.form = builder.group(myGroup);

अगर कुछ फ़ील्ड में अलग-अलग सत्यापनकर्ता हैं तो आप बाद में भी सेट कर सकते हैं:

this.form.get("myField").setValidators([someValidator]);

लेकिन ध्यान दें कि IMHO आप पठनीयता खो देते हैं।

1
n00dl3 24 अगस्त 2017, 18:56