사용자가 채운 이메일 주소를 확인하기 위해 맞춤 검사기를 만들었습니다. 어쨌든 이메일 필드는 필요하지 않지만 유효성 검사기를 추가하면 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
}
};
}
내가 빈 문자열을 받아 내 사용자 지정 유효성 검사기를 편집 할 수 있지만, 나는이 내 문제를 해결하는 올바른 방법이 아니다라고 생각합니다.
더 좋은 아이디어가 있습니까?
* 빈 문자열을 허용하도록 사용자 정의 유효성 검사기를 편집 할 수는 있지만 이것이 내 문제를 해결하는 올바른 방법이 아닌 것 같아요. * : 이것은 내게 완벽하고 자연스럽고 올바른 것으로 보입니다. –
음 ... 전자 메일 주소에 대한 사용자 지정 유효성 검사기를 만드는 경우 빈 문자열의 유효성을 검사 할 수 없으므로 다른 구성 요소에서 다시 사용할 수 있습니다. 동의하지 않니? – smartmouse
왜 다시 사용할 수 없습니까? 전자 메일 주소를 사용하려면 전자 메일 유효성 검사기를 사용하십시오. 필수 전자 메일 주소를 원하고 필수 및 전자 메일 검사기를 사용하십시오. 각 유효성 검사기는 고유 한 책임과 고유 한 오류를 가지고 있으며 원하는 동작을 달성하기 위해 구성합니다. –