В моем текущем приложении я пытаюсь создать форму, которая позволяет пользователям изменять свой адрес электронной почты или имя пользователя. У меня есть валидатор в полях формы, поэтому пользователи не могут иметь то же имя пользователя или пароль, что и другие пользователи. Я предварительно заполняю поле текущим именем пользователя и адресом электронной почты, однако, если я щелкну в этом поле, удалю один символ, а затем повторно применю его, я вызову текст предупреждения. Как я могу сделать так, чтобы валидатор не выдавал ошибку, если текущий пользователь вводит свое собственное имя пользователя?
import { Injectable } from '@angular/core';
import { FormControl, AbstractControl } from '@angular/forms';
import { UserinfoService } from 'src/services&Validtors/userinfo.service';
import { map } from 'rxjs/operators';
import { HttpClient, HttpParams } from '@angular/common/http';
@Injectable()
export class EmailValidator {
constructor(private http:HttpClient) { }
validateEmailNotTaken(control: AbstractControl) {
return this.checkEmailNotTaken(control.value).pipe(
map(res => {
return res ? null : { emailTaken: true };
})
);
}
checkEmailNotTaken(email: string) {
return this.http.get("http://127.0.0.1:8000/accounts/UserDataEmail/").pipe(
map((emailList: Array<any>) =>
emailList.filter(user => user.email === email)
),
map(email => !email.length)
);
}
}