Angular 如何在GET请求中以HTTP参数的形式传递两个主题/动作流,以使用RxJS返回单个对象/对象数组?

Angular 如何在GET请求中以HTTP参数的形式传递两个主题/动作流,以使用RxJS返回单个对象/对象数组?,angular,rxjs,rxjs6,rxjs-observables,rxjs-pipeable-operators,Angular,Rxjs,Rxjs6,Rxjs Observables,Rxjs Pipeable Operators,目标:我想通过使用RxJS将用户输入作为HTTP参数传入,从我的后端服务中获取一个对象和/或一系列对象。 例如,我使用声明性RxJS,因此我有两个主题(动作流)在用户点击Submit时从用户那里获取输入。我想将那些Subjects值作为HTTP参数传递到我的HTTP请求中,以便获取指定的间隔对象或间隔范围。 第一个主题/用户输入将始终是强制性的,而第二个主题/用户输入将是可选的。所以如果有人第一次输入4,第二次输入什么都没有。后端将接受输入4和“null”,因为没有输入任何内容。如果是这种情况,

目标:我想通过使用RxJS将用户输入作为HTTP参数传入,从我的后端服务中获取一个对象和/或一系列对象。 例如,我使用声明性RxJS,因此我有两个主题(动作流)在用户点击Submit时从用户那里获取输入。我想将那些Subjects值作为HTTP参数传递到我的HTTP请求中,以便获取指定的间隔对象或间隔范围。 第一个主题/用户输入将始终是强制性的,而第二个主题/用户输入将是可选的。所以如果有人第一次输入4,第二次输入什么都没有。后端将接受输入4和“null”,因为没有输入任何内容。如果是这种情况,请返回间隔编号为4的间隔。如果有第二个输入,如6,则从4->6返回一个间隔范围(如果存在)

问题:如何使用声明性RxJS将这两个主题作为http参数传递

下面是我的两个主题及其方法,以及我在我的
bayservice.ts
文件中对HTTP请求的尝试

  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}`))
      })
    );
我知道代码看起来不太好,但是我找不到关于这个的任何信息。谢谢你的帮助

另外这里是我尝试使用的后端API:

@RequestMapping(value="/readBayInventory/{centerId}/{beginBayId}/{endBayId}", method = GET)
    public ResponseEntity<HUResponse> readBayInventory(@PathVariable String centerId, @PathVariable int beginBayId, @PathVariable(required = false) int endBayId) {
@RequestMapping(value=“/readBayInventory/{centerId}/{beginBayId}/{endBayId}”,method=GET)
公共响应属性readBayInventory(@PathVariable字符串中心ID、@PathVariable int beginBayId、@PathVariable(必需=false)int endBayId){

您可以尝试更改您声明的方式
BayorBayes
,并移动到此表单

const bayOrBays$ = combineLatest([
  baySelectedAction$,
  bayEndSelectedAction$
]).pipe(
  concatMap(([bayStart, bayEnd]) => this.http.get<HuResponse>(`${this.HandlingUnitResponseUrlSecondary}/COS/${bayStart}/${bayEnd}`))
);
而这两种格式都返回
doStuff()
返回的内容

const myFunction = () => {
  return doStuff();
}

const myFunction = () => doStuff()

嗨,唐尼,谢谢你的问题。请你能更具体一点,在一段或两段代码中提问吗?这样会更容易提供帮助,这是很多词,伙计!你想要我的代码的图片吗?我发布了一个关于其他内容的问题,他们说要将我的代码键入StackOverflow。所以,我得到的结果不一,sorry、 我不知道如何解释它,除了我有两个主题接受用户输入,不管用户输入什么,我想在GET请求中作为http参数传递以检索单个/范围的bay对象。没问题,我记得我加入时也有点沮丧。只需写下你的问题及其相关代码。好的,我希望我是更好,而不是更糟。我真的不知道如何详细说明我的问题。你遇到了什么问题?get http没有被调用?是的,这就是我要做的。通过获取用户输入并像传递http请求一样传递它们,我的方法是正确的吗?谢谢你的回答!我开始取消设置rstand RxJS更好,我真的很喜欢它。我只是仍然有一些开销,需要我花一点时间来思考!谢谢!
const myFunction = () => {
  doStuff();
}
const myFunction = () => {
  return doStuff();
}

const myFunction = () => doStuff()