如何正确处理此Angular诺言以返回对象数组?

问题描述 投票:-2回答:1

我在Angular中非常陌生,正在发现以下问题。

进入服务类,我有这个:

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

@Injectable()
export class EventService {
    constructor(private http: HttpClient) {}

    getEvents() {
        return this.http.get('assets/json_mock/calendarevents.json')
                    .toPromise()
                    .then(res => JSON.parse(JSON.stringify(res)).data)
                    .then(res => console.log(res))
                    .then(res => { return res })
    }
}

所以getEvents()方法通过get()方法对服务器上的URL进行调用,并通过** toPromise()方法将此可观察对象转换为Promise。

然后我将响应结果转换为JSON对象,并将此JSON的data字段放入res

将它打印到控制台,这是我所期望的,这是输出:

(3) [{…}, {…}, {…}]
0: {id: 1, title: "All Day Event", start: "2017-02-01"}
1: {id: 2, title: "Long Event", start: "2017-02-07", end: "2017-02-10"}
2: {id: 3, title: "Repeating Event", start: "2017-02-09T16:00:00"}
length: 3
__proto__: Array(0)

最后我通过此行将其退回:

.then(res => { return res })

好吧,在我的Angular组件中,我必须使用这些数据,在这里我发现了一些问题。我正在尝试通过此行:

this.eventService.getEvents().then(events => { this.events = events;});

但是IDE给我以下错误消息:

类型'void'不能分配给类型'any []'。ts(2322)

尝试编译时出现类似错误:

ERROR in src/app/fullcalendar/fullcalendar.component.ts:22:52 - error TS2322: Type 'void' is not assignable to type 'any[]'.

22     this.eventService.getEvents().then(events => { this.events = events;});
                                                      ~~~~~~~~~~~

为什么会出现此错误?到底是什么意思我该如何解决?

我认为我的服务方法正在返回包含JSON的Promise,但很可能也是错误的,因为我的组件类期望包含JSON对象的对象数组。数组以这种方式在组件代码中声明(并且我无法更改它,因为它由PrimeNG日历使用):

events: any[];

我如何尝试解决此问题?

angular angular-promise angular-httpclient
1个回答
1
投票
© www.soinside.com 2019 - 2024. All rights reserved.