Я работаю над Angular5, на моей странице проекта есть функция загрузки, для которой я буду использовать компонент загрузки core из моей собственной организации. Пользователь может загрузить 5 файлов, и перед тем, как нажать кнопку upload, пользователь должен заполнить поле электронной почты.
Мое требование состоит в том, что как только пользователь фокусируется за пределами поля email, будет выполнен вызов службы, и на основе ответа службы я покажу сообщение об ошибке.
Я делаю это, как показано ниже:
Мой компонент HTML
<my-upload-compt (validateEmail) = "checkEmail($event)" [isEmailValid] = "isEmailValid"></my-upload-compt>
Мой компонент TS
isEmailValid: BehaviourSubject<boolean>;
checkEmail($event){
// make service call, suppose the service returns false.
this.isEmailValid.next(false);
}
Основной компонент TS
@Input() isEmailValid: BehaviourSubject<boolean>
ngOnInit(){
this.isEmailValid.subscribe(value => {
// show error msg
});
}
Моя проблема в том, что если я введу действительный адрес электронной почты в 1-е поле и недопустимый адрес электронной почты в следующее поле, даже первое поле покажет сообщение об ошибке. Как показать сообщение об ошибке для определенного поля, как только фокус будет отключен? Пожалуйста, направьте.
PS: вызов функции при фокусировке работает нормально, просто все поля начинают показывать ошибку, даже если в одном поле неправильный адрес электронной почты





Это идеальный вариант использования Angular Реактивные формы и AsyncValidatorFn. Используя это, вы сможете реализовать желаемое поведение для каждого поля.