Как отобразить Angular 5 в другой формат, используя map () - PullRequest
0 голосов
/ 04 июня 2018

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

Так вот моя проблема:

Для кроссплатформенного приложения, которое я делаюЯ использую ionic с Angular 5. Я хочу, чтобы календарь заполнялся собраниями, полученными из API.JSON, возвращенный из API, имеет множество встреч.Примерно так:

{
    "meetings": [
        {
            "id": 851,
            "published": false,
            "title": "testtestestestestsetsetsetsetsettettt",
            "title_modified": 1527688927,
            etc...,
        },
            etc...
     ]
}

Проблема в том, что для работы календаря нужен определенный ввод.Необходимые входные данные:

eventSource = {
      title: ...,
      startTime: ...,
      endTime: ...,
      allDay
}

Далее я хочу отобразить json, возвращенный API, в этот массив $ eventSource.Я проработал много учебников о том, как сделать это с помощью наблюдаемого, возвращаемого Angular HttpCLient.И придумал следующее:

private getMeetings(): void {
    this.apiCtrl.get('meetings/')
      .map((meetings) => {
        return meetings.map((meeting) => {
          return {
            title: meeting.title,
            startTime: meeting.start,
            endTime: meeting.endTime,
            allDay: false
          }
        })
      }).subscribe(
        meetings =>  {
          this.eventSource = meetings;
          console.log(this.eventSource);
        }
    )
}

Но он возвращает мне сообщение об ошибке: meetings.map is not a functions

Немного просмотра сказал мне добавить import { map } from 'rxjs/operators' или какой-то другой импорт.Но независимо от того, что я импортирую, это не работает.Некоторые говорили, что мне следует использовать метод pipe (), но это также не работает.

Я надеюсь, что кто-нибудь из присутствующих сможет помочь мне отформатировать эти данные json, возвращаемые API, в формат, необходимый для переменной eventSource.отображать встречи в календаре

Используемый мной ионный календарь: ionic2calendar (https://github.com/twinssbc/Ionic2-Calendar)

Ответы [ 3 ]

0 голосов
/ 04 июня 2018

Вам нужны ответные встречи.Ну, измени переменную на результат

private getMeetings(): void {
    this.apiCtrl.get('meetings/')
      .map((result) => { //put result
        return result.meetings.map((meeting) => {  //return result.meetings transformed
          return {
            title: meeting.title,
            startTime: meeting.start,
            endTime: meeting.endTime,
            allDay: false
          }
        })
      }).subscribe(
        meetings =>  {
          this.eventSource = meetings;
          console.log(this.eventSource);
        }
    )
}
0 голосов
/ 04 июня 2018
const respose$ = this.http.get(''); // some function returning Observable

return respose$.map(
        (obj) => {
          // Change Object here
          obj.val1 = ""
          obj.val2 = ""
        }
);

// Подписаться на эту наблюдаемую окончательно

0 голосов
/ 04 июня 2018

Вам нужно сначала распечатать meetings следующей строкой:

console.log(meetings) 

Скорее всего meetings не является массивом.Возможно, вам придется найти body или какой-то другой ключ внутри необработанного возврата.

Хорошо, должно быть meetings.meetings :)

...