Я пытаюсь отобразить наблюдаемые, отфильтровывая их по событиям, генерируемым другими наблюдаемыми.Итак, вот мой вызов:
Как передать свойство события в фильтр?
Вот пример, с какими сущностями я хочу получить.В настоящее время это работает, потому что я жестко закодировал реляционные идентификаторы.Я хотел бы прочитать эти идентификаторы из наблюдаемых в комментариях.
export class AppComponent implements OnInit {
currentInspection$;
currentAircraft$;
currentConfiguration$;
ngOnInit() {
const aircraft$ = Observable.of([
{ id: 1, callsign: 'D-AISY', configurationId: 100 },
{ id: 2, callsign: 'D-OOBE', configurationId: 200 },
{ id: 3, callsign: 'D-OOOO', configurationId: 100 }
]);
const inspections$ = Observable.of([
{ id: 10, aircraftId: 3 },
{ id: 20, aircraftId: 2 }
]);
const configurations$ = Observable.of([
{ id: 100, name: 'Default CRJ900 configuration' },
{ id: 200, name: 'Default B737 configuration' }
]);
this.currentInspection$ = inspections$.pipe(
map(inspections => inspections.find(inspection => inspection.id === 20))
);
// How do I get id property of this.currentInspection$ instead of 1 here?
this.currentAircraft$ = aircraft$.pipe(
map(aircraft => aircraft.filter(a => a.id === 1)) // I want the "1" to not be hardcoded
);
// How do I get configurationId property of this.currentAircraft$ instead of 100 here?
this.currentConfiguration$ = configurations$.pipe(
map(configurations => configurations.filter(c => c.id === 100)) // I want the 100 to not be hardcoded
);
}
}
А вот живой пример: https://stackblitz.com/edit/angular-streamception?file=src%2Fapp%2Fapp.component.ts
Я попытался использовать mergeMap для объединения первой наблюдаемой споследний и фильтр изнутри, но это похоже на работу против реактивного пути.
Если я подхожу к проблеме с неправильного угла, пожалуйста, направьте меня в правильном направлении.