我正在尝试以角度进行 get 调用,调用本身可以工作,因为我可以将日志放入订阅中并查看返回的数据我遇到的问题是我似乎无法将数据分配给我现有的数组(当前为空) 并且因为下面的代码是Event[]
. 我尝试在数据数组上使用映射,它也是类型Event[]
但没有运气,并且与推送相同,尽管我相信这是因为您无法推送数组。我确信有一些简单的东西我丢失或找不到。
这是我正在打的电话,并大声疾呼事件模型。
this.httpClient.get<Event[]>('http://127.0.0.1:5555/events-get').subscribe((data) => this.events = data);
export class Event {
constructor(public name: String, public date: Date, public time: Date) {}
}
我是 Angular 的新手,所以我可能做错了任何帮助都非常感谢。
编辑
我做了更多的研究,但仍然没有乐趣,也许这与订阅它有关。我从这里尝试了一些阵列克隆解决方案
编辑 2
进一步看,我看到 subscribe 的内容是一个函数,我在范围中缺少什么我this.events
需要以某种方式传递,它是在类级别设置的。
编辑 3
import { Event } from '../shared/event.model';
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Subject } from 'rxjs';
import { map } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http'
@Injectable()
export class AdminService {
eventsChanged = new Subject<Event[]>();
private events: Event[] = [];
constructor(private http: Http, private httpClient: HttpClient) {}
getEvents() {
this.httpClient.get<Event[]>('http://127.0.0.1:5555/events-get')
.pipe(
map(
(data: Event[]) => data.map(event => {
// may need to coerce string to Date types
return new Event(event.name, event.date, event.time)
})
)
)
.subscribe((events: Event[]) => this.events = events);
console.log(this.events);
return this.events;
}
然后我在我的组件中使用这个调用,这与使用本地数组Event[]
.
this.events = this.adminService.getEvents();