Http在Angular 2自定义异步验证中不起作用

亚历山德鲁·普凡

我正在尝试创建一个自定义的异步验证器,该验证器将转到服务器并检查是否已注册电子邮件。

不幸的是,似乎没有触发get请求,因为什么也没发生。我已经尝试了多个console.logs subscribe,但是它们没有运行。

我已经检查了该请求是否在验证程序之外起作用,并且确实如此,所以这不是问题。

import { Component } from '@angular/core';
import { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';
import { Response, Http } from '@angular/http';

 @Component({
     templateUrl: 'build/pages/welcome/signup/signup.html',
     providers: [AuthService, CustomValidators]
})
export class Signup {

     signupForm: FormGroup;

     constructor(private formBuilder: FormBuilder, private http: Http) {

         this.signupForm = formBuilder.group({
             'email': ['', Validators.required, this.checkEmail],
         }):
     }

     checkEmail(control: FormControl): Promise<any> {

          const promise = new Promise<any>(
             (resolve, reject) => {

                 this.http.get('/sharealead/main.php?action=checkEmail').subscribe(
                     (res: Response) => {
                         console.log('it never gets here');
                         console.log(res)
                         if (res.text() == 'already there') {
                             resolve({'emailTaken': true});
                         } else {
                             resolve(null);
                         }
                     },
                     (err) => {
                         console.log('it never gets here');
                         console.log(err);
                    }
                 )   
             }
         );
         return promise;
     }

}
蒂埃里圣堂武士

这是因为您引用了函数,却失去了this上下文。您可以使用bind方法或环绕箭头函数来解决该问题(将该函数链接到组件实例):

this.signupForm = formBuilder.group({
         'email': ['', Validators.required, this.checkEmail.bind(this) ],
});

要么

this.signupForm = formBuilder.group({
         'email': ['', Validators.required, (control:Control) => {
           return this.checkEmail(control);
         } ],
});

就您而言,this不包含http属性...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在URL对象中设置自定义HTTP请求标头不起作用

如何在Angular2 / 4/5中实现自定义异步验证器

自定义HTTP 403页面在Spring Security中不起作用

将自定义组件与Angular2结合使用时,JQueryUI Sortable不起作用

在angular2中<ng-content>上的自定义样式不起作用?

Angular2提供自定义Http不起作用

Angular2- RC6自定义窗体控件不起作用

自定义Angular 2指令不起作用

角度自定义异步验证器不起作用

使用jQuery的自定义JavaScript代码在Angular 5(angular-cli)中不起作用

自定义过滤器在Angular Hybrid应用中不起作用

Angular 6:setTimeout函数在我的自定义验证器中不起作用

http.delete()在Angular 2中不起作用

Angular 7反应性表单生成器,自定义交叉验证器不起作用

Angular 8:自定义HTML属性在组件html中不起作用

异步自定义验证器不起作用并在Angular 8中显示错误消息

反应形式的条件自定义验证不起作用-Angular 9

Ag-Grid中的自定义过滤器在Angular 10应用程序中不起作用

以http开头的自定义URL方案不起作用

Angular自定义指令中的动态模板(在嵌套ng-repeats中)不起作用

Angular JS:Javascript在自定义指令模板中不起作用

确认密码自定义指令在Angular中不起作用

JAX-RPC请求中的自定义HTTP标头在Websphere 8中不起作用

我的自定义管道(过滤器)在Angular 2中不起作用

Http Get catch 在 angular 2 中不起作用

Angular 2 - 自定义表单验证器不起作用

自定义指令中的 Angular HostBinding 在 *ngFor 中不起作用

Angular 反应式表单自定义验证:更新更改第一次不起作用

Angular Reactive Forms 中的自定义验证器不起作用