Для Углового 2 приложения, я написал пользовательский валидатор машинопись класс, как показано ниже,буквенно-цифровая проверка не работает
import { FormControl } from '@angular/forms';
export class AlphaNumericValidator {
static invalidAlphaNumeric(control: FormControl): { [key: string]: boolean } {
if (control.value.length && !control.value.match(/^[a-z0-9]+$/i)) {
return { invalidAlphaNumeric: true };
}
return null;
}
}
Я подаю этот валидатор для Model Driven формы,
'name': [this.exercise.name, [Validators.required, AlphaNumericValidator.invalidAlphaNumeric]],
И вот это HTML,
<label *ngIf="exerciseForm.controls.name.hasError('invalidAlphaNumeric') && (exerciseForm.controls.name.touched || submitted)" class="alert alert-danger validation-message">Name must be alphanumeric</label>
Я замечаю, что всякий раз, когда я набираю символ во вводе, вызывается вышеупомянутый код класса TypeScript, но каждый раз он возвращается Null.
Есть ли проблема в классе typeScript?
Спасибо!
Может быть только потому, что 'control.value.match (/^[а-z0-9] + $/я)' всегда сопоставляется –
тогда что было бы правильным регулярным выражением для буквенного числа – user584018
Что вы получаете, когда добавляете 'console.log (control.value.match (/^[a-z0-9] + $/i));' before th 'if (...) '? –