I've got this setter which assigns a class member observable systemAreasOptions$. I do it there because it needs to wait for mappedItem$ to have had an emission which is not null. I originially had systemAreasOptions$ assigned at the class level, but it did not wait for mappedItem$. For some reason I couldn't even get the HTML to rerender when using the asyncPipe. How do I tell an observable (systemAreasOptions$ to wait for another observable (mappedItem$), instead of just assigning it where the other one emits?
public set mappedItem(mappedItem: IPermissionsMappedItem) { mappedItem.hydrate$Permissions().then(_ => { this.mappedItem$.next(mappedItem); this.systemAreasOptions$ = from( this.lookupService.SYSTEM_AREAS.toNestedLookup() .$promise as unknown as Observable<IPermissmissionsLookup[]> ).pipe( map(systemAreas => orderBy(systemAreas,systemArea => systemArea?.label?.toLowerCase())), map(systemAreas => systemAreas.map(area => ({ ...area, permissions: this.getPermissionsForArea(area.id) }))), shareReplay(1), tap(console.log) ); this._subscriptions.add( this.systemAreasOptions$.subscribe( this.systemAreasOptionsBehaviourSubject$) ); }); }