KostyaTretyak/ng-stack

fg.hasError('minlength', 'name') error

bl9l opened this issue · 14 comments

bl9l commented

When i am trying to check a formControl for a 'minlength' error, i am getting this lint error

image

I guess it should be 'minLength', but in this case it does not work.

Could you provide more of your code? Did you passed your validation model as the second parameter for the _formGroup?

bl9l commented

I did.

import {FormControl, FormGroup, Validators} from '@ng-stack/forms';


_formGroup: FormGroup<RegisterModel> = new FormGroup({
    name: new FormControl<string>('', [Validators.required]),
    phone: new FormControl<string>('', [Validators.required]),
    username: new FormControl<string>('', [Validators.required, Validators.email]),
    password: new FormControl<string>('', [Validators.required, Validators.minLength(6)]),
  });
bl9l commented

Also for now I am using this solution.

  _checkPasswordMinLength() {
    return this._formGroup.hasError('minlength' as any, 'password');
  }

image

So, why you need minlength error name (not minLength)?

bl9l commented

Because, if I use minLength, the error check does not work.

bl9l commented

And mat-error, does not apear

bl9l commented

The validation error has gone. But I got another one
image

Богдан, ви зможете читати українською мої коментарі?

bl9l commented

да

Ок, я видалив свою підказку із MyValidatorsModel, оскільки в такому разі досить багато що прийдеться переписувати. Вам цей варіант краще не застосовувати.

Я вже досить давно займався цим модулем і позабував що і як тут працює, тому мені потрібно деякий час для виправлення цього багу.

P.S. Ноги у нього ростуть звідси angular/angular#28721

bl9l commented

фикс раеботает, если расширить валидарор вот так

class MyValidatorsModel extends ValidatorsModel {
  minlength: {
    requiredLength: number;
    actualLength: number;
  };
}


_formGroup = new FormGroup<RegisterModel, MyValidatorsModel>({
    name: new FormControl<string, MyValidatorsModel>('', [Validators.required]),
    phone: new FormControl<string, MyValidatorsModel>('', [Validators.required]),
    username: new FormControl<string, MyValidatorsModel>('', [Validators.required, Validators.email]),
    password: new FormControl<string, MyValidatorsModel>('', [Validators.required, Validators.minLength(6)]),
  });

Приходится указывать MyValidatorsModel, на кождом из FormControl.
Но этот код работает

Оновлюйте:

npm i @ng-stack/forms@^1.3.3

Після оновлення повинно працювати і так:

_formGroup = new FormGroup<RegisterModel>({
    name: new FormControl('', [Validators.required]),
    phone: new FormControl('', [Validators.required]),
    username: new FormControl('', [Validators.required, Validators.email]),
    password: new FormControl('', [Validators.required, Validators.minLength(6)]),
  });
bl9l commented

Работает. Спасибо

For anyone having this trouble you can change validation.type.toLowerCase() and compare it to hasError() (which is in lower case).. who know why??