typescript - Angular Hatası TS2554: 0 argüman bekleniyordu, ancak pipelenmiş operatörlerde x alındı


Gözlemlenebilir getHappyDays()'in pipe'ında Error TS2554: 0 argüman bekleniyordu, ama 4 alındı hatası alıyorum

getHappyDays() Observable, Observable<HttpResponse<IHappyDays>> | Observable<HttpErrorResponse> döndürüyor, problemi daha iyi göstermek için bir stackblitze ekledim

 resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):
    Observable<IHappyDays> | Observable<never> {

    return this.happyService.getHappyDays()
      .pipe(//=>error thrown here
        first(),
        mergeMap((res) => {
          return of(res.body)
        })
      )
  }

https://stackblitz.com/edit/angular-3iujhb/happy-resolver.service içinde

Cevap #1

Sorun, getHappyDays()'deki birleşim dönüş türüdür. Bunu Observable<HttpResponse<IHappyDays> | HttpErrorResponse> olarak değiştirdiğinizde çalışacaktır (bkz: https://github.com/ReactiveX/rxjs/issues/3388).

Arayüz tasarımıyla ilgili not: Bu açık bir şekilde bir hata olduğundan HttpErrorResponse değerini döndürmezdim. Angular HttpClient dokümantasyonu, hatalarla nasıl başa çıkılacağı konusunda bazı yönergeler sağlamaktadır: https://angular.io/guide/http

İlgili makaleler