У меня есть две службы: «PatientsService» и «AppointmentService». В третьем сервисе «AppointedPatientsService» я хочу подписаться на AppointmentService, чтобы получать все забронированные встречи с PatientId, и после этого я хочу многократно подписываться на PatientsService.getPatient (PatientId), чтобы получать данные пациента с PatientId. И затем я хочу вернуть новый массив с именем allAppointedPatients, который содержит все встречи с данными пациента. Я попробовал это ...
getAppointments() {
let allAppointments: Appointment[] = [];
const allAppointedPatients: AppointedPatient[] = [];
return this.appointmentService.fetchAllAppointments().pipe(
take(1),
tap(appointments => {
allAppointments = appointments;
for (const appointment of allAppointments) {
this.patientsService.getPatient(appointment.patientId).pipe(
tap(patient => {
const newAppointment = new AppointedPatient(patient.firstName,
patient.lastName,
patient.address,
patient.casePaperNumber,
appointment.appointmentDateTime);
allAppointedPatients.push(newAppointment);
})
).subscribe();
}
return allAppointedPatients;
}),
pipe(tap((data) => {
return this.allAppointedPatients;
}))
);
}
Это не работает, и я знаю, что должен быть лучший способ справиться с таким сценарием. Пожалуйста, помогите ...