0

在一个解析器中,我需要获取用户数据。首先,我需要检查其配置文件是否为“销售”,如果是,则使用返回的用户名我必须从其他 http get 方法获取 salesPerson 数据,否则返回一些我可以检查是否为空的数据。

我有两种不同的方法:

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();

我很高兴有人可以提供帮助。提前致谢

4

1 回答 1

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();
于 2019-03-27T19:20:31.290 回答