Resolvedor angular com observáveis ​​relacionados usando withLatest [duplicado]

Oct 28 2020

O segundo observável do meu resolvedor deve usar o resultado do primeiro observável. Não consegui descobrir como passar esses dados para o segundo observável:

  resolve(route: ActivatedRouteSnapshot,
          state: RouterStateSnapshot): Observable<[Project[], Owner]> {
    const currentEmail = this.CurrentUserEmail();
    return this.searchService.genericSearchApi('/api/searchproject', ...[//I need to pass the user here.]]).pipe(
        withLatestFrom(
            this.userService.getUserByEmail(currentEmail)

        )
    );
  }

Obrigado pela ajuda!

Respostas

2 MichaelD Oct 28 2020 at 20:01

Você precisaria usar qualquer um dos operadores de mapeamento de ordem superior RxJS nos casos em que um observável depende da emissão de outro observável.

Ilustração usando switchMapoperador

resolve(
  route: ActivatedRouteSnapshot,
  state: RouterStateSnapshot
): Observable<[Project[], Owner]> {
  const currentEmail = this.CurrentUserEmail();
  return this.userService.getUserByEmail(currentEmail).pipe(
    switchMap(user => this.searchService.genericSearchApi('/api/searchproject', user))
  );
}