如何使用map()

时间:2018-06-04 13:42:20

标签: angular dictionary ionic-framework angular5 httpclient

我已经为这个问题搜索了几天。我可能在这里错过了很明显的事情,但这个愚蠢的问题让我非常激动;)

所以这是我的问题:

对于跨平台应用,我使用离子与Angular 5.我想要一个日历,其中包含从API检索的会议。从API返回的json有一系列会议。像这样:

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

问题是日历需要一定的输入才能工作。它需要的输入是:

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

接下来我想将API返回的json映射到此$ eventSource数组。我通过很多关于如何使用Angular HttpCLient返回的observable来完成这项工作的方法。并想出了以下内容:

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()方法,但这也不起作用。

我希望有人在这里能够帮助我将API返回的json数据格式化为eventSource变量在日历中显示会议所需的格式

我使用的离子日历是:ionic2calendar(https://github.com/twinssbc/Ionic2-Calendar

3 个答案:

答案 0 :(得分:1)

您需要先使用以下行打印meetings

console.log(meetings) 

很可能meetings不是数组。您可能必须在原始回报中找到body或其他一些键。

好的,应该是meetings.meetings :)

答案 1 :(得分:0)

您需要回复会议。会议。好吧,将变量更改为结果

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);
        }
    )
}

答案 2 :(得分:0)

const respose$ = this.http.get(''); // some function returning Observable

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

//最后订阅此Observable