import { Directive } from '@angular/core'; import { AbstractControl, NG_VALIDATORS, Validators, ValidatorFn } from '@angular/forms'; export function multiEmailValidator(regexPattern: RegExp): ValidatorFn { return (control: AbstractControl): { [key: string]: any } => { const emails = control.value.split(','); const valid = emails.find((email: string) => { email = email.trim(); const test = regexPattern.test(email); return test === false; }); return valid ? { multiEmail: { emails } } : null; }; } @Directive({ selector: '[bomMultiEmail]', providers: [ { provide: NG_VALIDATORS, useExisting: MultiEmailValidatorDirective, multi: true } ] }) export class MultiEmailValidatorDirective { private valFn = Validators.nullValidator; validate(control: AbstractControl): { [key: string]: any } { return this.valFn(control); } }