Итак, вот стекаблиц:
https://stackblitz.com/edit/ionic-f9kfnm
В основном, если код formBuilder в конструкторе выглядит следующим образом (исключая шаблон регулярного выражения):
this.signupForm = this.formBuilder.group({
nickname: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
email: ['', Validators.compose([Validators.email, Validators.required])],
password: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
ageTermsAccepted: [false, Validators.pattern('true')],
policiesAccepted: [false, Validators.pattern('true')]
});
пользовательский опыт с проверкой псевдонима выглядит нормально (предупреждение появляется и исчезает, только если введенное значение недопустимо.
Теперь, если я добавлю регулярное выражение Validator:
this.signupForm = this.formBuilder.group({
nickname: ['', Validators.compose([Validators.pattern('^[a-zA-Z0-9_-]$'),Validators.minLength(3), Validators.maxLength(20), Validators.required])],
email: ['', Validators.compose([Validators.email, Validators.required])],
password: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(20), Validators.required])],
ageTermsAccepted: [false, Validators.pattern('true')],
policiesAccepted: [false, Validators.pattern('true')]
});
Проверка не работает какожидается.
Существует ли правило, что, если я использую регулярное выражение, мне придется полагаться только на него и не может объединить это с другими в валидаторах сборки, таких как max chars?