要解决Angular 6中组件中的电子邮件模式验证不起作用的问题,您可以按照以下步骤操作:
ngForm
或formGroup
指令。
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'app-email-form',
templateUrl: './email-form.component.html',
styleUrls: ['./email-form.component.css']
})
export class EmailFormComponent {
email: string;
submitForm(form: NgForm) {
if (form.valid) {
console.log('Form submitted successfully');
} else {
console.log('Invalid form');
}
}
}
validateEmail
方法来验证电子邮件格式。import { Component } from '@angular/core';
import { NgForm, AbstractControl, ValidationErrors } from '@angular/forms';
@Component({
selector: 'app-email-form',
templateUrl: './email-form.component.html',
styleUrls: ['./email-form.component.css']
})
export class EmailFormComponent {
email: string;
submitForm(form: NgForm) {
if (form.valid) {
console.log('Form submitted successfully');
} else {
console.log('Invalid form');
}
}
validateEmail(control: AbstractControl): ValidationErrors | null {
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (control.value && !emailPattern.test(control.value)) {
return { invalidEmail: true };
}
return null;
}
}
import { Directive } from '@angular/core';
import { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
@Directive({
selector: '[email-validation][ngModel]',
providers: [
{
provide: NG_VALIDATORS,
useExisting: EmailValidationDirective,
multi: true
}
]
})
export class EmailValidationDirective implements Validator {
validate(control: AbstractControl): ValidationErrors | null {
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
if (control.value && !emailPattern.test(control.value)) {
return { invalidEmail: true };
}
return null;
}
}
通过上述步骤,您应该能够解决Angular 6中组件中电子邮件模式验证不起作用的问题。请注意,如果您在使用Angular Material或其他UI库时进行表单验证,可能需要相应地调整这些示例代码。