Я не знаю, что я делаю не так.Мой валидатор пробелов работает неправильно.
TS:
this.personalForm = this.form.group({
firstname: ['', [Validators.required, Validators.minLength(4), CustomValidators.validateCharacters]],
lastname: ['', [Validators.required, NoWhitespaceValidator()]], //CustomValidators.validateCharacters,
country: ['', [Validators.required]],
dateOfBirth: ['', [Validators.required]],
gender: ['', [Validators.required]],
})
HTML:
<mat-form-field class="field-sizing">
<input matInput required placeholder="{{ 'REGISTRATION.LASTNAME' | translate }}" name="lastname"
formControlName="lastname" type="name"
[ngClass]="{ 'is-invalid': g.lastname.touched && g.lastname.errors }" />
<mat-error class="invalid-feedback"
*ngIf="g.lastname.touched && g.lastname.errors && g.lastname.errors.whitespace">
{{ 'REGISTRATION.LASTNAME' | translate }}
</mat-error>
</mat-form-field>
Функция валидатора:
import { AbstractControl, ValidatorFn } from '@angular/forms';
export function NoWhitespaceValidator(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } => {
// messy but you get the idea
let isWhitespace = (control.value || '').trim().length === 0;
let isValid = !isWhitespace;
return isValid ? null : { 'whitespace': true }
};
}
Я регистрируюсь вконсоль, и она реагировала только тогда, когда ничего не было вставлено или когда в начале были вставлены только пробелы.Это ничего не дает, потому что я хочу проверить, есть ли начальные или конечные пробелы, а затем показать сообщение об ошибке.