Angular 是否需要帮助进行远程验证以检查电子邮件是否存在或未使用IO
我尝试使用下面的代码调用远程验证 在组件文件中 验证码Angular 是否需要帮助进行远程验证以检查电子邮件是否存在或未使用IO,angular,Angular,我尝试使用下面的代码调用远程验证 在组件文件中 验证码 this.formCompany = this.fb.group({ varEmail: [null, Validators.compose([Validators.required, Validators.maxLength(150),this.emailExist.bind(this)])], }}); 用于检查电子邮件是否存在的功能 emailExist(control: FormControl) { if(con
this.formCompany = this.fb.group({
varEmail: [null, Validators.compose([Validators.required, Validators.maxLength(150),this.emailExist.bind(this)])],
}});
用于检查电子邮件是否存在的功能
emailExist(control: FormControl) {
if(control.value) {
this.services.emailExist(control.value).subscribe(res => {this.checkEmailExist = res;
if(this.checkEmailExist.exist > 0) {
return { 'emailexist': true };
} else {
return null;
}
} );
} else {
return null;
}
}
HTML代码
<div fxLayout="row" fxLayoutWrap="wrap">
<md-input-container class="ml-xs mr-xs" style="width: 60%">
<input mdInput placeholder="Email Address" maxlength="150" [ngModel]="CompanyEdit.varEmail" [formControl]="formCompany.controls['varEmail']">
</md-input-container>
<small *ngIf="formCompany.controls['varEmail'].hasError('required') && formCompany.controls['varEmail'].touched" class="mat-text-warn">Please insert email address.</small>
<small *ngIf="formCompany.controls['varEmail'].hasError('maxlength') && formCompany.controls['varEmail'].touched" class="mat-text-warn">Email address can not exceed 150 characters.</small>
<small *ngIf="formCompany.controls['varEmail'].hasError('emailexist') && formCompany.controls['varEmail'].touched" class="mat-text-warn">Email address already exist.</small>
</div>
请插入电子邮件地址。
电子邮件地址不能超过150个字符。
电子邮件地址已存在。
此代码不起作用 您需要绑定
此
,以便拥有此
的正确(外部)范围。通过绑定this
您可以参考this.services
(例如,它不属于此emailExist
功能)
我建议您阅读关于这个
-关键字的这篇精彩问答:
因此,您需要做的只是:
this.emailExist.bind(this)
在您的
验证器
数组中。如果电子邮件存在,则控件有效,否则无效,这就是您想要的?对,但这里我通过this.services调用服务。因此,它给了我一个错误,即无法读取未定义的属性“services”。我在插入和更新代码时使用了相同的服务。你能给我看一下你的构造函数吗,让你注入服务
?你可以通过设置完整的代码来编辑问题吗?(重要的部分)你需要绑定这个
,这样这个
就会有你想要的范围,所以请绑定这个.emailExist.bind(这个)
@AJT\u 82你说得对!我忘了这一点,它现在正在工作,得到了服务部门的响应。但验证不起作用Kay。。。不工作意味着什么?如果你的回答是有效的,你的回答是什么?如果不是,你的回答是什么?您没有在订阅中设置任何验证器:)请仔细查看您的代码。。。拥有自定义验证程序。。。它会给服务打很多次电话。。。也许你想重新考虑这个问题?你会重新考虑这个请求,并根据其他条件提出请求,因为这种方式可能不是最好的。这会产生一系列api调用,如果您在键入时这样做,它甚至没有时间执行上一个调用……是的。我尝试在更改时调用此服务,但无法在onChange事件中调用此服务。