angular - Angular - 异步响应式表单验证器的问题
问题描述
我遇到的问题是我想调用一个对 API 进行 http 调用的服务,并检查给定的用户名是否存在。
来自 Auth 的代码:
usernameCheck(username: string){
return this.http.get(this.baseUrl + "usernamecheck?username=" + username);
}
来自控制器的代码:
async usernameExistsValidator(g: FormGroup){
const username = g.get("username").value;
let username_exists: boolean;
if(username){
await this.authService.usernameCheck(username).toPromise()
.then(
(res : any) => {
username_exists = res.exists;
}
)
console.log(username_exists)
return username_exists ? { usernameExistsError: true } : null;
}
主要问题是我得到了正确的 console.log 值,但返回什么也没做。
解决方案
暂停直到 promise 用await解决,所以改变这个
await this.authService.usernameCheck(username).toPromise()
.then(
(res : any) => {
username_exists = res.exists;
}
)
console.log(username_exists)
经过
const res = await this.authService.usernameCheck(username).toPromise()
username_exists = res.exists;
console.log(username_exists)
推荐阅读
- java - if语句失败中的字符串变量
- javascript - Next JS:控制台登录getStaticProps异步函数调用
- django - 如何编辑记录但显示从下拉框中选择的现有值
- c# - 如何在 C# 中使用 Azure 存储中的 TableQuery 在条件之间写入
- c++ - 有没有办法在构造时制作一个对象向量,通过它可以更改成员?
- elixir - Elixir - 更新嵌套地图/JSON;没有错误,但没有更新
- python - 关于 odoo 和烧瓶服务器安装?
- python - 如何使用 FTPS/TLS 1.2 版模拟 FTP 连接?
- html - 在 Sharepoint Online 中隐藏 wiki 页面中的站点内容链接
- javascript - 将带有标题的新列添加到电子表格的 Google Web App 脚本