为什么没有获取第一个流中的参数数据
来源: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 }); }) );
00
Angular打造企业级协作平台,让你在Angular领域中出类拔萃
全网首个介绍官方 Material 组件库用法与 Redux 在 Angular 中的应用
998 学习 · 536 问题
相似问题