angular - 如何从 Angular 中的 Promise 对象类型中获取价值?
问题描述
我在 Angular Service 中定义了一个函数调用:
getNewJoinerInfo(staffID: String) {
return this.httpClient.get(this.ldapEndPoint + staffID, this.httpOptions).toPromise()
.then(res => of(JSON.parse(JSON.stringify(res)).result[0] as NewJoinerObj))
}
当我在组件中调用此函数时,如何从Promise<NewJoinerObj>
类型中获取这些值?当我尝试将 return 分配给NewJoinerObj
type 时,它是错误的,因为Promise<NewJoinerObj>
is not NewJoinerObj
。
var response = <NewJoinerObj> this.newJoinerService.getNewJoinerInfo(this.newJoiner.staffId);
我该怎么办?
解决方案
您正在使用角度。
不建议在 Angular 中使用 Promises
让我们考虑下面的代码
getNewJoinerInfo = (staffID: String) =>
this.httpClient.get(this.ldapEndPoint + staffID, this.httpOptions)
我只是返回响应。这将返回一个Observable<Object>
. 让我们考虑您的代码,
你调用.toPromise()
- 这转换为Promise
你调用.then()
并返回of()
它转换回Observable
您可以通过简单地管道Observable
流来实现这一点
import { map } from 'rxjs/operators';
getNewJoinerInfo = (staffID: String) =>
this.httpClient.get(this.ldapEndPoint + staffID, this.httpOptions).pipe(
map(([result]) => result as NewJoinerObj )
)
我使用解构来提取第一项,而不是map((result) => result[0] )
我有map(([result]) => result )
接下来要注意的是,您需要订阅Observable
. 看它像.then()
。Observables
在您的组件中,您可以拥有
newjoiner: NewJoinerObj;
ngOnInit () {
this.myService.getNewJoinerInfo().subscribe(
res => this.newjoiner = res
)
}
在你的 html 中简单地绑定
<span>{{ newjoiner | json }}</span>
json
管道只是启用 JSON 对象的显示
推荐阅读
- javascript - 如何使用 jquery 恢复和删除表 td 数据
- magento2 - Magento 2 + UI 组件在帖子中没有获得价值
- javascript - 按钮内的可点击 div 在 Firefox 上不起作用
- angular - 如何在 Angular 4/5 中访问多个复选框值
- java - 设置字符代码表以在 ESC/POS 打印机中打印非拉丁字符
- java - 从 jdbc 执行 PLSQL 后读取 DBMS_Ouptut
- linux - 如何在 MAC OS 上将 Vertica 连接到 Python?我需要 Unix 还是 Linux 脚本?
- python - Python:使用 re.compile 处理异常
- python - CSV 文件不存在,Python,Pandas 数据框
- asp.net-mvc-4 - 如何通过asp.net MVC以编程方式检查Android中是否安装了应用程序?