ЦЕЛЬ: Я хочу ПОЛУЧИТЬ один объект и / или ряд объектов из моей серверной службы, передав пользовательские данные в качестве параметров HTTP с помощью RxJS. Например, я использую декларативный RxJS, поэтому у меня есть два субъекта (поток действий), чтобы получать ввод от пользователя, когда он нажимает «Отправить». Я хочу передать эти значения Subjects, как параметры HTTP, в свой HTTP-запрос, чтобы получить либо указанный объект отсека, либо диапазон отсеков. Первый Subject / UserInput всегда будет обязательным, тогда как второй Subject / UserInput будет необязательным. Итак, если кто-то вводит 4 для первого ввода, а затем ничего для второго ввода. Серверная часть примет оба входа как 4 и «ноль», потому что ничего не было вставлено. В этом случае верните отсек с номером отсека 4. Если есть второй вход, например 6, верните диапазон отсеков от 4 - ›6, если они есть.
Проблема: как передать эти два объекта в качестве параметров http с помощью декларативного RxJS?
Вот два моих объекта и их метод, а также моя попытка выполнить HTTP-запрос в моем bay-service.ts
файле.
private bayStartSelectedSubject = new Subject<number>();
baySelectedAction$ = this.bayStartSelectedSubject.asObservable();
private bayEndSelectedSubject = new Subject<number>();
bayEndSelectedAction$ = this.bayEndSelectedSubject.asObservable();
selectedBayChanged(selectedBayStartNumber: number, selectedBayEndNumber?: number): void {
this.bayStartSelectedSubject.next(selectedBayStartNumber);
this.bayEndSelectedSubject.next(selectedBayEndNumber);
}
private HandlingUnitResponseUrlSecondary = 'http://localhost:8080/sbtemplate/readBayInventory';
bayOrBays$ = combineLatest([
this.baySelectedAction$,
this.bayEndSelectedAction$
])
.pipe(
map(([bayStart, bayEnd]) => {
mergeMap(() => this.http.get<HuResponse>(`${this.HandlingUnitResponseUrlSecondary}/COS/${bayStart}/${bayEnd}`))
})
);
Вот где я беру пользовательские данные в моем bay-page.ts
файле и вызываю их метод для выдачи значения пользовательского ввода:
onSubmit() {
this.bayService.selectedBayChanged(this.bayForm.get('bayStart').value, this.bayForm.get('bayEnd').value);
if(!this.invalidBay) {
this.bayDoesNotExistError = true;
this.selectedBay = this.bayForm.get('bayStart').value;
this.vibration.vibrate(500);
console.log('Vibrating for 3 second...')
} else {
this.navCtrl.navigateForward([`/results/`]);
}
Я знаю, что код выглядит не очень хорошо, но я не могу найти никакой информации по этому поводу. Спасибо за помощь!
Также Вот серверный API, который я пытаюсь задействовать:
@RequestMapping(value="/readBayInventory/{centerId}/{beginBayId}/{endBayId}", method = GET)
public ResponseEntity<HUResponse> readBayInventory(@PathVariable String centerId, @PathVariable int beginBayId, @PathVariable(required = false) int endBayId) {