Angular HttpClient Ожидается 0 аргументов типа, но получено 1 - PullRequest
0 голосов
/ 31 марта 2020

У меня есть служба, где я выполняю http-запросы к своему API, а затем я предоставляю службы для других целей, которые передают URL-адреса службе http-запросов. Но когда я пытаюсь добавить модель в мой запрос get, я получаю ошибку Expected 0 type arguments, but got 1.

calendar.service.ts

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
// WebReq for http requests 
import { WebRequestService } from './web-request.service';
import { ICalendarEvent } from '../../models/calendar-event.model';


@Injectable({
    providedIn: 'root',
})

export class CalendarService {

    constructor(private webReqService: WebRequestService) { }

    // Where I get the error
    getCalendarEvent(): Observable<ICalendarEvent[]> {
        return this.webReqService.get<ICalendarEvent[]>('/calendars');
    }

}

web-request.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class WebRequestService {

  readonly _url: string;

  constructor(private http: HttpClient) {
    this._url = 'some url';
  }

  get(uri: string) {
    return this.http.get(`${this._url}/${uri}`);
  }

  post(uri: string, payload: Object) {
    return this.http.post(`${this._url}/${uri}`, payload);
  }

  patch(uri: string, payload: Object) {
    return this.http.patch(`${this._url}/${uri}`, payload);
  }

  delete(uri: string) {
    return this.http.delete(`${this._url}/${uri}`);
  }


}

calendar-event.model.ts

export interface ICalendarEvent {
    id: number;
    start: string;
    end: string;
    title: string;
    estimate_number: string;
    brand: string;
    meters: string;
    floor: string;
    floor_type: string;
    plint_type: string;
    floor_installer: number;
    city: string;
    street: string;
    postal_code: string;
    province: string;
    notes: string;
}

1 Ответ

5 голосов
/ 31 марта 2020

Если вы хотите вызвать функцию с параметром типа, вам нужно добавить в объявление параметр типа generi c.

Если вы хотите в полной мере воспользоваться этим, я бы рекомендуем добавить тип возврата к вашей функции.

get<T>(uri: string): Observable<T> {
  return this.http.get<T>(`${this._url}/${uri}`);
}
...