Angular方法返回订阅者而不是bool

时间:2018-02-28 15:55:49

标签: javascript angular typescript http

我需要有角度的帮助,我有一种方法可以验证电子邮件是否已经存在。

此代码对此负责:

emailExists = (email) => this.http.post(`${this.BASE_URL}/emailExists`, { 'email': email }).subscribe(response => {
    if (!response.json())
        return false

    this.handleError("Email already exists!")
    return true
}, error => this.handleError(error.json()))

这是谁调用方法:

const emailValid = (auth) => 
control => {
    var a = auth.emailExists(control.value)
    var b = (/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(control.value)

    if (!a && b)
        return null
    else
        return { invalidEmail: true }
}

值得注意的是,负责该代码的代码根据电子邮件的原创性返回true或false,但是调用此方法的人正在获取订阅者,我在哪里错了?

Imagem do retorno: Image of what its being returned

我将提供的任何其他信息。

编辑:我无法在链接的副本中得到答案,我已经尝试了所有重复的内容,没有任何效果......

1 个答案:

答案 0 :(得分:0)

  

使用注释

修改结构
var emailExists = (email) => {    // Keep the rest of the code within this block
  let res: boolean;               // Response that you are expecting

    this.http.post(`${this.BASE_URL}/emailExists`, {
        'email': email
    }).subscribe(response => {
        if (!response.json()) {
            res = false;                           // Assign Value
            return;
        }

        this.handleError("Email already exists!")
        res = true;                                // Assign Value
        }), error => this.handleError(error.json());

    return res;                   // Return the response, instead of Subscriber
};