Getting data from another array whilst looping through first array

Sure. You should be able to adapt something like this:

getAllBeerDetails(): Observable<Beer[]> {
  return this.getAllBeerIds()
    .mergeMap(ids => Observable.forkJoin(ids.map(id => this.beerDetailsById(id))));
}

getAllBeerIds(): Observable<string[]> {
  return this.http.get(urla);
}

beerDetailsById(id: string): Observable<Beer> {
  return this.http.get(urlb + id);
}