在一个解析器内部,我需要获取用户数据。首先,如果需要,我需要检查其配置文件是否为“ Sales”,使用返回的用户名,我必须从其他http get方法获取salesPerson数据,否则,返回一些可以检查是否为空的数据。
我有2种不同的方法:
userInfo(): Observable<User> {
return this.httpClient.get('/endpoint/api/auth/me')
.pipe(
map(result => result['user'])
)
} // in this observable there is the username and profile inside.
getSalesPerson(username) {
return this.httpClient.get<ISalesRep>(`${this.BASE_URL}/getVendedor?user=${usuario}`);
} // is this observer there is salesPerson data with SalesPersonId
两者的观察者不同。第一个问题: 在解析器的解析方法上,应使用哪种类型?第一个使用IUSer接口,第二个使用ISalesRep接口。
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
Observable<????> | Promise<????> | ??? { ... }
第二个问题: 如何获得退货?
return this.loginService.userInfo()
.pipe (
???someMethod???((user) => {
if ( user.profile == 'Sales' ) {
return this.otherService.getSalesPerson(user.username)
.subscribe((data) => { take the SalesPerson Observable }
} else {
return empty observable or some I can check if is empty;
}
})
)
.subscribe();
我认为有人可以提供帮助。 预先感谢
答案 0 :(得分:0)
我认为这方面应该有所帮助
this.loginService.userInfo()
.pipe (
concatMap((user) => {
// User is the result of the userInfo method
if ( user.profile == 'Sales' ) {
return this.otherService.getSalesPerson(user.username)
} else {
return of(null)
}
}),
concatMap((salesPerson) => {
if (!salesPerson) { /* do something else */ }
// the result of this.otherSerivce.getSalesPerson()
}),
)
.subscribe();