为什么没有获取第一个流中的参数数据

来源:6-4 实战服务逻辑(下)

慕丝0294471

2020-02-04

图片描述为什么没有获取第一个流中的参数数据。

写回答

1回答

接灰的电子产品

2020-02-05

首先不要在这个函数中 subscribe,subscribe 意味着流的终止,既然要返回流,就要在调用这个方法的地方进行 subscribe

然后为什么要使用 contactMap,要理解各个操作符的含义再去使用,你这种情况应该使用 switchMap

loginmain 返回的是什么结构?如果和你另一个问题说的结构一致,那么就是一个类似下面的结构

“Sys_LoginSet”: [
{
"cLoginUISetUUID": “4567e0c-df34-c261-71c4-ce75357e3035”,
"cOrgOrSPUUID":“8900e0c-df34-c261-71c4-ce75357e3035”,
“iManOrg”:1,
“bReceiveSP”:“ture”,
“cDomainAddress”:“localhost”,
“bInfoRange”: “true”,
“cIndustryAttribute”: “Industry”,
“cDefaultAccUUID”: “”,
“bPicAlternate”: “true”,
“bSysPrese”: “true”,
“pubufts”: “202001010001”
}
]

那么此时 你下面代码就是不是很清晰,首先 http.get<loginSet[]> 这个尖括号里面的类型应该是整个流完成后你希望得到的数据类型,而不是第一个流返回的数据类型。其次,第二个流中 contactMap((uuid: loginSet) => ... 这里有另外几个错误,这个参数 uuid 是第一个流返回的结构,而第一个流返回的是数组,而不是对象。另外 第二个流返回的 this.http.get<loginSet[]>(`${dataurl}/loginUIbgImg`, { params }); 我感觉应该不对,你两个流返回数据结构一致?不可能吧,服务端返回的 JSON 结构决定了 你使用 http.get<T> 这个T 的类型

this.http.get<loginSet[]>(`${dataurl}/Sys_LoginSet`, { params })
  .pipe(contactMap((uuid: loginSet) => {
    const params = new HttpParams().set('cLoginUISetUUID', uuid.cLoginUISetUUID);
    return this.http.get<loginSet[]>(`${dataurl}/loginUIbgImg`, { params });
  })
  );


0
0

Angular打造企业级协作平台,让你在Angular领域中出类拔萃

全网首个介绍官方 Material 组件库用法与 Redux 在 Angular 中的应用

998 学习 · 536 问题

查看课程