У меня есть услуга, которая имеет следующий метод:
room-service.ts
@Injectable()
export class RoomService {
private readonly _equipment: BehaviorSubject<EquipmentDto[]> = new BehaviorSubject([]);
public equipment$ = this._equipment.asObservable();
getEquipmentForRoom(roomId: number) {
this.restService.getEquipmentForRoom(roomId).subscribe(res => {
this._equipment.next(res);
});
}
room-component.ts:
@Component()
export class RoomsComponent implements OnInit {
@Input() room: RoomEntity;
equipment$: Observable < EquipmentDto[] > ;
equipmentList: Array < EquipmentDto > ;
constructor(private equipmentService: EquipmentService) {}
ngOnInit() {
this.equipment$ = this.equipmentService.equipment$;
this.equipmentService.getEquipmentForRoom(this.room.id);
this.equipment$.subscribe(items => {
this.equipmentList = items;
});
room-component . html
<div *ngFor="let eq of room.equipmentList">
<!-- list my equipment here -->
</div>
Теперь у меня есть родительский компонент, который содержит несколько компонентов комнаты (они добавляются программно в зависимости от количества комнат). В любом случае, перечень оборудования для каждой комнаты одинаковый. Похоже, что после подписки данные в первых компонентах перезаписываются компонентом, созданным как последний.
Мой вопрос в том, как я могу получить правильные данные для каждой из комнат, используя наблюдаемый из моей службы?