<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Prasad Lokhande</title>
    <description>The latest articles on DEV Community by Prasad Lokhande (@prasad_lokhande_24056d5e7).</description>
    <link>https://dev.to/prasad_lokhande_24056d5e7</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1880286%2F1afd00a7-d4c0-4063-88ca-639e65c4b276.jpg</url>
      <title>DEV Community: Prasad Lokhande</title>
      <link>https://dev.to/prasad_lokhande_24056d5e7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prasad_lokhande_24056d5e7"/>
    <language>en</language>
    <item>
      <title>Angular Dynamic Form Validators: minLength and maxLength Not Working</title>
      <dc:creator>Prasad Lokhande</dc:creator>
      <pubDate>Sun, 04 Aug 2024 06:46:43 +0000</pubDate>
      <link>https://dev.to/prasad_lokhande_24056d5e7/angular-dynamic-form-validators-minlength-and-maxlength-not-working-1n35</link>
      <guid>https://dev.to/prasad_lokhande_24056d5e7/angular-dynamic-form-validators-minlength-and-maxlength-not-working-1n35</guid>
      <description>&lt;p&gt;&lt;strong&gt;Issue Description&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I am working on an Angular project to generate dynamic forms based on a JSON configuration. The forms can include input fields, groups (which can be a group of input fields), and lists (arrays of objects). I am facing an issue with validation. While the validation functions for required and pattern are working correctly, the validation functions for minLength and maxLength are not working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code&lt;br&gt;
&lt;em&gt;Validator Mapping Function&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mapValidators(validators: any[]): { validators: any[], messages: any[] } {
  const formValidators: any[] = [];
  const messages: any[] = [];
  if (validators) {
    validators.forEach((validator) =&amp;gt; {
      switch (validator.type) {
        case 'required':
          formValidators.push(Validators.required);
          messages.push(validator.message);
          break;
        case 'pattern':
          formValidators.push(Validators.pattern(validator.pattern));
          messages.push(validator.message);
          break;
        case 'minLength':
          formValidators.push(Validators.minLength(validator.length));
          messages.push(validator.message || `Minimum length is ${validator.length}`);
          break;
        case 'maxLength':
          formValidators.push(Validators.maxLength(validator.length));
          messages.push(validator.message || `Maximum length is ${validator.length}`);
          break;
        case 'custom':
          // Assuming the custom validator is a function
          formValidators.push(validator.validator);
          messages.push(validator.message);
          break;
      }
    });
  }
  return { validators: formValidators, messages: messages };
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Display Error in Template&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div *ngSwitchCase="'String'" class="m-3"&amp;gt;
  &amp;lt;label for="{{ control.name }}" class="form-label"&amp;gt;
    {{ control.label }}
  &amp;lt;/label&amp;gt;
  &amp;lt;input
    id="{{ control.name }}"
    type="text"
    class="form-control custom-input-height custom-input-style"
    [formControlName]="control.name"
    placeholder="{{ control.placeholder || '' }}"
  /&amp;gt;
  &amp;lt;div
    *ngIf="form.get(control.name)?.touched &amp;amp;&amp;amp; form.get(control.name)?.invalid"
    class="text-danger mt-1"
  &amp;gt;
    &amp;lt;div *ngFor="let validator of control.validators"&amp;gt;
      &amp;lt;div *ngIf="form.get(control.name)?.errors?.[validator.type]"&amp;gt;
        {{ validator.message }}
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>angular</category>
      <category>validators</category>
      <category>json</category>
    </item>
  </channel>
</rss>
