angular - 订阅订阅以将数据从服务加载到组件中(Angular)
问题描述
我想将来自服务的两种方法的数据加载到组件中。此代码不起作用 - 我不知道公司名称,我了解:
private userData;
private companyName;
ngOnInit() {
this.dataService.getUser(this.idUser).subscribe((user) => {
this.userData = user[`data`][0];
});
this.dataService.getCompany(this.userData.id_company).subscribe((company) => {
this.companyName = company[`data`][0].name;
});
}
然后我在订阅中订阅:
private userData;
private companyName;
ngOnInit() {
this.dataService.getUser(this.idUser).subscribe((user) => {
this.userData = user[`data`][0];
this.dataService.getCompany(this.userData.id_company).subscribe((company) => {
this.companyName = company[`data`][0].name;
});
});
}
这是这样做的好习惯吗?有没有替代方法?
解决方案
您想使用switchMap运算符
this.dataService.getUser(this.idUser).pipe(
map(resp => resp.data[0]),
switchMap(user => this.dataService.getCompany(user.id_company).pipe(
map(resp => [user, resp.data[0]])
))
).subscribe(([user, company]) => {
this.user = user;
this.companyName = company.name;
});
推荐阅读
- sql - 在 grafana 中可视化时,timescale db 中 where 子句的条件错误
- python - 如何使用`heapq.merge`?
- imagemagick - 使用采样因子将 Kodak png 图像转换为 webP
- python - 我的 api.search 函数根本不返回任何结果。我是否需要获得批准的 Twitter 开发人员帐户才能使代码正常工作?
- python-3.x - bsoup xml解析如何获取next_element结果的标签名?
- kotlin - 序列化 Kotlin 数据类时排除非空属性
- python - API 调用限制结果 - 如何使其显示所有结果?
- r - 在列表中创建指标变量
- javascript - 如何设置请求标头“XSRF-TOKEN”以动态创建s 在表单中并提交
- oracle - 动态将行转换为列