首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Angular 2异步验证器

Angular 2异步验证器
EN

Stack Overflow用户
提问于 2018-10-08 01:03:58
回答 1查看 45关注 0票数 0
代码语言:javascript
复制
   isUnameTaken(formCtrl:FormControl): Promise<any>|Observable<any>{
    var status ;
    console.log(this.formGroup);

    this.http.post("http://localhost:3000/user/isAvaliable", { userName: formCtrl.value}).subscribe((resp:any)=>{
      console.log(resp);
       status = resp.status;
      console.log(status);
      if (status === 'success') {
        return Promise.resolve({ userExists: true });
      } else {
        return Promise.resolve(null);
      }
    });


  }

我得到的状态是undefined,因为post请求需要时间来解决。我尝试使用Promise.resolve返回promise,所以如何以适当的方式等待响应

上面的函数是角度验证器函数

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-08 01:20:31

您可以使用Observablemap函数来转换Observable发出的值,如下所示:

代码语言:javascript
复制
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

// ...

return this.http.post("http://localhost:3000/user/isAvaliable", { userName: formCtrl.value }).pipe(
  map((resp: any) => {
    console.log(resp);
    status = resp.status;
    console.log(status);
    return status === 'success' ? { userExists: true } : null;
  })
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52690865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档