Наблюдаемый HttpClient не может правильно отобразить из HttpResponse - PullRequest
0 голосов
/ 25 апреля 2019

Я получил службу в angular7, которая возвращает мне несколько ключей:

  getList(
    pageSize: number = 30,
    pageNumber: number = 0,
    filters: CKeyListFilters = <CKeyListFilters>{},
    sortByKey: string = 'activeTo',
    sortOrder: SortOrder = SortOrder.DESC
  ): Observable<ListPaginated<CKey[]>> {
    // ....

    return this.http
      .get<ListPaginated<CKey[]>>(`${environment.CApiUrl}/Get`, {
        params: params,
        observe: 'response',
      })
      .pipe(
        map((resp: HttpResponse<CKey[]>) => {
          return {
            content: resp.body,
            pagination: this.utilities.getPaginationMetaData(resp),
          } as ListPaginated<CKey[]>;
        }),
        catchError((error) => {
          throw error;
        })
      );
  }

Но внутри метода pipe я получил эту ошибку:

error TS2345: Argument of type 'OperatorFunction<HttpResponse<CKey[]>, ListPaginated<CKey[]>>' is not assignable to parameter of type 'OperatorFunction<HttpResponse<ListPaginated<CKey[]>>, ListPaginated<CKey[]>>'.

Итак, я хочусопоставьте HttpResponse<CKey[]> с ListPaginated<CKey[]> Но я не знаю, как я могу его преобразовать.

Я унаследовал этот код, и я новичок в typescript, поэтому любое предложение полезно для меня!

1 Ответ

1 голос
/ 25 апреля 2019

OK.Вот оно:

      .get<ListPaginated<CKey[]>>(`${environment.CApiUrl}/Get`, {
        params: params,
        observe: 'response',
      })
      .pipe(
        map((resp: HttpResponse<CKey[]>) => {

в строке 1, запрошенный ресурс имеет тип ListPaginated<CKey[]>.В строке 6 аргумент map имеет тип HttpResponse<CKey[]>.Эти типы должны совпадать (или вы можете вообще удалить resp из map).

...