ユーザーが入力したメールアドレスをチェックするカスタムバリデーターを作成しました。とにかく、電子メールフィールドは必須ではありませんが、バリデーターを追加すると、それも含まrequired
れます。
constructor
私のコンポーネントクラスのフォームは次のとおりです。
this.myForm = fb.group({
'name': [''],
'surname': [''],
'username': ['', Validators.required],
'email': ['', validateEmail]
});
電子メール フィールドは必須ではありませんが、ユーザーが入力しない場合、フォームは検証されません。同時に、ユーザーが入力すると、電子メールの検証が適用されます。
これが私の電子メールバリデータです:
export function validateEmail(c: FormControl) {
var EMAIL_REGEXP = /^(|(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})*$/i;
return EMAIL_REGEXP.test(c.value) ? null : {
validateEmail: {
valid: false
}
};
}
空の文字列を受け入れるようにカスタム バリデータを編集できますが、これは問題を解決する正しい方法ではないと思います。
もっと良いアイデアはありますか?