Ошибка слияния при отправке запроса с сервера

У меня есть угловое приложение, и я делаю почтовый запрос со служебным вызовом.

Но я получаю сообщение об ошибке. Но служба вызова отправить запрос. Так что это очень вводящая в заблуждение ошибка.

Это метод, который у меня есть:

sendEcheq(patientId: string) {
    if (this.sendEcheq.length > 0) {

      of(this.echeqsToSend)
        .pipe(
          mergeMap(echeqsToSend =>
            forkJoin(
              echeqsToSend.map((echeqFamily) =>
                this.echeqSubmissionMedicalService.createSubmissionBatch(1,   {
                  echeqFamilies: [
                    echeqFamily.family
                  ],
                  participants: [
                   patientId

                  ]
                }).subscribe(result => {
                  console.log(result);
                })
              )
            )
          )
        )
        .subscribe(
          result => {
            this.dialog.close();
            this.snackBar.open('De vcheq(s) zijn verstuurd', 'Ok');
          },
          error => {
            console.error('Server error when assigning vcheq', error);
            this.snackBar.open('Er ging iets mis bij het opsturen, probeer het later nog een keer', 'Ok');
            this.dialog.close();
          }
        );
    }
  }

Итак, если я выполняю сервисный метод: createSubmissionBatch, он работает. Но я все еще получаю эту ошибку:

echeq-selector.component.ts:89 Server error when assigning vcheq TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
    at subscribeTo (subscribeTo.js:41)
    at subscribeToResult (subscribeToResult.js:11)
    at new ForkJoinSubscriber (forkJoin.js:42)
    at Observable._subscribe (forkJoin.js:28)
    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable._trySubscribe (Observable.js:43)
    at Observable.push../node_modules/rxjs/_esm5/internal/Observable.js.Observable.subscribe (Observable.js:29)
    at subscribeTo.js:21
    at subscribeToResult (subscribeToResult.js:11)
    at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._innerSub (mergeMap.js:74)
    at MergeMapSubscriber.push../node_modules/rxjs/_esm5/internal/operators/mergeMap.js.MergeMapSubscriber._tryNext (mergeMap.js:68)

конечно, я сначала погуглил об этой ошибке. Но я нашел только то, что было связано с чем-то другим, например этот ответ:

TypeError: вы предоставили недопустимый объект, где ожидался поток. Вы можете предоставить Observable, Promise, Array или Iterable


person Community    schedule 27.11.2019    source источник


Ответы (1)


Вы возвращаете Subscription вместо потока, потому что у вас есть внутренний .subscribe, который печатает ваш результат.

Вместо этого вы должны направить результат в операцию tap и распечатать его там, поскольку tap не будет изменять возвращаемый поток.

sendEcheq(patientId: string) {
  if (this.sendEcheq.length > 0) {
    of (this.echeqsToSend)
    .pipe(
      mergeMap(echeqsToSend =>
        forkJoin(
          echeqsToSend.map((echeqFamily) =>
              this.echeqSubmissionMedicalService.createSubmissionBatch(1, {
                  echeqFamilies: [
                      echeqFamily.family
                  ],
                  participants: [
                      patientId

                  ]
              }).pipe(
                  tap(result => console.log(reslult))
              )
          )
        )
      )
    ).subscribe(
      result => {
          this.dialog.close();
          this.snackBar.open('De vcheq(s) zijn verstuurd', 'Ok');
      },
      error => {
          console.error('Server error when assigning vcheq', error);
          this.snackBar.open('Er ging iets mis bij het opsturen, probeer het later nog een keer', 'Ok');
          this.dialog.close();
        }
    );
  }
}
person Daniel B    schedule 27.11.2019