I have seen similar questions asked, but those questions had slightly different data structures to what I'm dealing with. I've looked at:
This is my data structure:
{
  "samples": {
    "24084": {
      "addInfo": "TEST",
      "datePrinted": "8/11/2017 9:42:57 AM",
      "equipment": "GR028",
      "hmisNumber": "100E",
      "lotNumber": "GR0030C659-JM",
      "productionNumber": "PN0034781",
      "userName": "MCorbett"
    },
    "24342": {
      "addInfo": "test",
      "datePrinted": "8/15/2017 11:51:55 AM",
      "equipment": "GR025",
      "hmisNumber": "100",
      "lotNumber": "BR0010P835",
      "productionNumber": "PN0035616",
      "userName": "MCorbett"
    }
  },
  "scans": {
    "-Krlb3tv3oFPtYZp2ErX": {
      "inTime": 1502997139131,
      "sampleId": "24342"
    },
    "-KrlbdbCT0us6xE9POm3": {
      "inTime": 1502997289573,
      "outTime": 1502997292524,
      "sampleId": "24342"
    },
    "-Krlc3vsjiQ9czWYGvA9": {
      "inTime": 1502997401784,
      "outTime": 1502997404864,
      "sampleId": "24084"
    }
  }
}
As you can see, Samples to Scans have a one to many relationship. What I need to do is populated a table with Sample data joined to scan data. It needs to look like this:
"24342": {
  "addInfo": "test",
  "datePrinted": "8/15/2017 11:51:55 AM",
  "equipment": "GR025",
  "hmisNumber": "100",
  "lotNumber": "BR0010P835",
  "productionNumber": "PN0035616",
  "userName": "MCorbett",
  "inTime": 1502996197213
}
I need to grab all Scans where outTime is undefined, and then join it to it's corresponding Sample data. Here is what I have tried so far:
  // Get samples that have a scan where inTime is populated but outTime is not
  getOpenSamples() {
      console.log('getopensmaples stareted')
      let scanWithSampleList = this.scanSvc.getScansList({
              orderBy: 'outTime',
              startAt: ''
          })
          .switchMap(scans => {
              let sampleObservables = scans.map(scan => this.getSample(scan.sampleId));
              console.log("insisde");
              return sampleObservables.length === 0 ?
                  Observable.of(scans) :
                  Observable.combineLatest(sampleObservables, (samples) => {
                      scans.forEach((scan, index) => {
                          scan.productionNumber = samples[index].productionNumer;
                          scan.lotNumbner = samples[index].lotNumber;
                      });
                      return scans;
                  });
          });
  }
This gives me this error:
ERROR in C:/Users/corbetmw/workspace/angular/sample-time-tracking/src/app/samples/shared/sample.service.ts (82,54): Propert y 'productionNumer' does not exist on type '{}'.
What am I doing wrong here? This seems like a simple enough thing, but I'm having a lot of trouble with it. Do I need to change my data structure? Should I make a component that gets the Scans with undefined outTime and stick it in the table with a parent that can pass the sample ID, or vice versa?