簡體   English   中英

如何使用map()將可觀察到的Angular 5映射為其他格式

[英]How to map Angular 5 observable to a different format using map()

我一直在尋找這個問題的幾天。 我可能在這里很想念某些東西,但是這個愚蠢的問題使我頗具攻擊性;)

所以這是我的問題:

對於跨平台應用程序,我正在將ionic與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返回的可觀察對象來實現此目的。 並提出了以下內容:

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'或其他導入中添加import { map } from 'rxjs/operators' 但是無論我導入什么都行不通。 有人說我應該使用pipe()方法,但這也不起作用。

我希望這里的人能夠幫助我將API返回的json數據格式化為eventSource變量在日歷中顯示會議所需的格式

我正在使用的離子日歷是:ionic2calendar( https://github.com/twinssbc/Ionic2-Calendar

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

console.log(meetings) 

最有可能的meetings不是數組。 您可能需要在原始返回值中找到一個body或其他鍵。

好的,應該是meetings.meetings :)

您需要回程meetings.meetings。 好吧,將變量更改為結果

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);
        }
    )
}
const respose$ = this.http.get(''); // some function returning Observable

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

//最終訂閱此Observable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM