Служба Generi c не передает JSON ответ на данный объект - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время я пытаюсь создать универсальный c сервис для централизации httpRequest.

@Injectable()
export class ResourceService<T extends Resource> {

  url = environment.apiUrl;

  constructor(
     protected httpClient: HttpClient,
     protected endpoint: string) { }

  list(): Observable<T[]>  {
    return this.httpClient
      .get(`${this.url}/${this.endpoint}`)
      .pipe();
  }
}

Но я столкнулся с проблемой, потому что хочу, чтобы ответ JSON был приведен к объекту данного типа T, чтобы использовать методы объекта, но он никогда не приводится.

export class CalendarService extends ResourceService<CalItem> {
  constructor(httpClient: HttpClient) {
    super(httpClient, '**');
  }

  getCalendarItems() {
    return super.list().pipe(
      map(
        (events => {
          const calendarEvents: CalendarEvent[] = [];
          events.map((event :CalItem ) => {
            calendarEvents.push(event.toCalEvent());
          });

          this._events.next(calendarEvents);
        })
      )).subscribe();
    }
}

export class CalItem extends Resource  {
  title: string;
  location: string;
  startdate: Date;
  enddate?: Date;

  toCalEvent() {
   return {
    id: this.id,
    start: this.startdate,
    end: this.enddate,
    title: this.title
  }
}

Например, если я вызываю мой метод getCalendarItem (), он выдает ошибку

Uncaught TypeError: event.toCalEvent не является функцией

Поскольку 'событие' по-прежнему является JSON, а не объектом CalItem.

Вы уже сталкивались и решить эту проблему или мне нужно навести "вручную" ответ в моем объекте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...