2017-07-11 8 views
0

は私.TSファイルで、この角度バリデータを持つことができます。 null値も許可したい。どうすればいい?角度Validators.emailはNULL値

+0

@TimLibertyあなたはバリデータを動的に追加しようとしましたか?独自のカスタムバリデータを作成したくない場合は、別の可能性があります – brijmcq

答えて

-1

カスタムバリデータ:

export function emailValidator(): ValidatorFn { 
    return (control: AbstractControl): { [key: string]: any } => { 
    // tslint:disable-next-line:max-line-length 
    let regex = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
    const mail = control.value; 
    const matches = regex.test(mail); 
    // If value is null, let the required error handle it 
    return !mail ? null : matches ? null : { 'mailPattern': { mail } }; 
    }; 
} 
3

null /空の値が期待される形状(正規表現)に対して一致しませんので、それは単にです。

ThisValidators.emailで使用されている現在の正規表現です:

const EMAIL_REGEXP = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/; 

console.log(EMAIL_REGEXP.test('')); // false 
console.log(EMAIL_REGEXP.test(null)); // false 
console.log(EMAIL_REGEXP.test('[email protected]')); // true 

あなたが望むものを達成、あなたはどちらかできbuild a custom validator、この正規表現またはnull /空の値を受け入れること、または私は何かのために私はこの要件を持っていました:が0より大きい場合はValidators.emailを値に適用するan async validatorを持っていました。

+0

メールバリデータの説明のためのUpvote – trichetriche