Új hozzászólás Aktív témák

  • petyus_
    senior tag

    Az igazából ennyi:

    export function containDigit(control: AbstractControl): { [key: string]: boolean } | null {
        if(control.errors?.required || control.errors?.minlength || control.errors?.maxlength){

            return null;    }
       if (!/[A-Z]/.test(control.value) && environment.passwordContainDigit) {

    return { 
    'containUpperCase': true }    
    }
        return null;

    }

    Akkor ír ki 2 hibaüzenetet amikor belekattintottam a mezőbe, de nem írtam semmit, nyilván olyankor required-re is lő, meg erre is, ezért próbálkoztam az első if-ben, megnézni, hogyha van már a required-re hiba, akkor ne is nézze ezt

    Kipróbáltam most a te validátorodat, és nekem jól működik.

    Így néz ki a html:
    <mat-form-field class="w-100">
      <mat-label>Name</mat-label>
      <input type="text" id="name" formControlName="name" matInput placeholder="Enter category name" />
      <mat-error *ngIf="name.hasError('required')">Name is required.</mat-error>
      <mat-error *ngIf="name.hasError('minlength')">Name must be at least 3 characters.</mat-error>
      <mat-error *ngIf="name.hasError('containUpperCase')">Must conatin uppercase</mat-error>
    </mat-form-field>

    És a ts-ben annyit csináltam, hogy beleraktam a te functionödet, meg hozzáadtam a formcontrolhoz:
    name: new FormControl('', [Validators.required, Validators.minLength(3), this.containUpperCase]),

    Így üresen, és 3 karakter alatt csak a minlength hibát írja, containUpperCase-t meg utána (átneveztem containDigit-ről :) ).

    A name az egy sima getter, vissza adja a 'this.form.control.name'-et, így átláthatódd a html.

Új hozzászólás Aktív témák