ユーザーが入力した電子メールアドレスを確認するカスタムバリデーターを作成しました。とにかくメールフィールドは必須ではありませんが、バリデーターを追加するとrequired
も含まれます。Angular2:バリデータを追加する方法と必要なものを除外する方法
は、ここに私のコンポーネントクラスの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][email protected]((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6})*$/i;
return EMAIL_REGEXP.test(c.value) ? null : {
validateEmail: {
valid: false
}
};
}
が、私は空の文字列を受け入れるように、私のカスタムバリデータを編集することもできますが、私は、これは私の問題を解決する正しい方法ではないと思います。
良いアイデアはありますか?
*カスタムバリデーターを編集して空の文字列を受け入れることができますが、これは私の問題を解決する正しい方法ではないと思います。*:これは私にとっては完全に自然で正しいことのようです。 –
Uhm ...電子メールアドレス用のカスタムバリデーターを作成した場合、空の文字列を検証できないため、別のコンポーネントで再利用できます。あなたは同意していませんか? – smartmouse
なぜあなたはそれを再利用できませんでしたか?オプションの電子メールアドレスを使用したい場合は、電子メールバリデータを使用してください。必要な電子メールアドレスを要求し、必要な電子メールバリデータを使用します。各バリデーターには独自の責任があり、独自のエラーがあり、目的の動作を達成するためにそれらを構成します。 –