У меня возникли проблемы с моим простым валидатором электронной почты. Моя страница .ts, которая контролирует мой HTML имеет следующий код:Угловой 2 Email Validator
import {EmailValidator} from '../../validators/email';
@Component({
templateUrl: 'build/pages/auth-signup/auth-signup.html',
})
export class AuthSignupPage {
constructor(private formBuilder: FormBuilder) {
this.slideOneForm = new FormGroup({
firstName: new FormControl('', [
Validators.maxLength(30),
Validators.pattern('[a-zA-Z ]*'),
Validators.required
]),
lastName: new FormControl('', [
Validators.maxLength(30),
Validators.pattern('[a-zA-Z ]*'),
Validators.required]),
email: new FormControl('', [
Validators.maxLength(30),
EmailValidator.isValidMailFormat,
Validators.required]),
password: new FormControl('', [
Validators.maxLength(30),
Validators.required]),
confirmPassword: new FormControl('', [
Validators.maxLength(30),
Validators.required])
});
}
}
Мой HTML-код:
<ion-item>
<ion-label floating>Email (this will be your login/username)</ion-label>
<ion-input #email (change)="elementChanged(email)" formControlName="email" type="email" [class.invalid]="!slideOneForm.controls.email.valid && (emailChanged || submitAttempt)"></ion-input>
</ion-item>
И, наконец, мой email.ts, что держит мой валидатор выглядит следующим образом:
import {Control} from '@angular/common';
export class EmailValidator {
static isValidMailFormat(control: Control){
var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-][email protected][a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
if (control.value != "" && (control.value.length <= 5 || !EMAIL_REGEXP.test(control.value))) {
return { "Please provide a valid email": true };
}
return null;
}
}
У меня возникают ошибки при ссылке на этот валидатор в моем основном файле .ts. Например, я получаю эту ошибку при наведении курсора на «EmailValidator.isValidMailFormat»
[ts]
Argument of type '(ValidatorFn | ((control: Control) => { "Please provide a valid email": boolean; }))[]' is not assignable to parameter of type 'ValidatorFn | ValidatorFn[]'.
Type '(ValidatorFn | ((control: Control) => { "Please provide a valid email": boolean; }))[]' is not assignable to type 'ValidatorFn[]'.
Type 'ValidatorFn | ((control: Control) => { "Please provide a valid email": boolean; })' is not assignable to type 'ValidatorFn'.
Type '(control: Control) => { "Please provide a valid email": boolean; }' is not assignable to type 'ValidatorFn'.
Types of parameters 'control' and 'c' are incompatible.
Type 'AbstractControl' is not assignable to type 'Control'.
Property 'updateValue' is missing in type 'AbstractControl'.
import EmailValidator
Что я делаю не так?
, но все еще нужно немного больше проверки, потому что я могу написать тест @ тест withou «.com», который является недействительный адрес электронной почты –
user @ host Действительное электронное письмо. Для хост-части не требуется иметь TLD. Конечно, ваш почтовый маршрутизатор будет пытаться маршрутизировать только в вашем локальном домене. – MonkRocker
К сожалению, этот валидатор электронной почты проверяет подлинность [email protected] на true, даже если он отсутствует .com. – seBaka28