我想验证用户名,如果它已存在于我的数据库中。这是我的代码:`
import { FormControl } from '@angular/forms';
export class EmailValidator {
static checkEmail(control: FormControl): any {
return new Promise(resolve => {
let EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;
if (control.value != "" && (control.value.length <= 5 || !EMAIL_REGEXP.test(control.value))) {
resolve({
"Please provide a valid email": true
});
}else if(control.value.toLowerCase() === "sample123@yahoo.com"){
resolve({
"email taken": true
});
}else {
resolve(null);
}
});
}
}
希望你能帮助我。提前谢谢。
答案 0 :(得分:0)
逻辑可以恢复到以下概念(粗略地):
表单验证
this.authService.registerEmail(email).subscribe(data => {
if (data.success) {
//server answered that the email doesn' exist
showSucces();
doSomthingHere(); //route?
}
else{
//failed, email exists
showFail();
doReturnToTheForm(); //route back
}
和
<强> AuthService 强>
registerEmail(email) {
return this.dataService.postData(someUrl, email);
}
其中dataService正在由后端服务器管理http POST请求。
<强>的DataService 强>
constructor(private http:Http)
postData(dataUrl: string, body: any): Observable<any> {
return this.http.post(url, JSON.stringify(body), { headers: this.getHeaders(null) })
.map(res => res.json())
.catch((res: Response) => this.errorManager(res));
}
答案 1 :(得分:-1)
您可以通过创建Api并在请求中传递电子邮件来执行此操作。作为回应,您将从服务方获得成功或错误。 没有Api电话就无法处理它。