我正在为学校做一个项目,但由于缺乏使用Angular的经验,我遇到了麻烦。我有一个带有一堆复选框选择的left-nav组件,当用户选择其中一个“代码”时,API调用将转到我们的数据存储,以检索给定"key“的所有值。
this.dataService.getData(key);
从那时起,我得到了一个不同的组件,它监听数据的检索,然后生成一个图。我面临的问题是,数据服务成功地进行了API调用并返回了JSON响应,但我不知道如何将该数据/对象传递给时间图。
private segResponse$: Observable<SegmentResponse>;
@Output() dataRetrieved: EventEmitter<Observable<SegmentResponse>> = new EventEmitter();
...
getData(key: string) {
this.segResponse$ = this.httpClient.get<SegmentResponse>(this.baseUrl + key);
console.log('seg resp in service ' + this.segResponse$);
this.dataRetrieved.next(this.segResponse$);
}
我在这里可以很好地看到控制台响应,但是在我的时间图中,对象(类型为SegmentResponse)是未定义的。“状态”只是SegmentResponse的一个属性(字符串)。
ngOnInit() {
this.dataService.dataRetrieved.subscribe( data => {
this.segResponse = data;
console.log('time graph got data ' + this.segResponse.state);
});
}
那么,为什么它一开始就没有定义呢?我需要做什么才能成功地将SegmentReponse从数据服务转移到时间图?我猜.next部分不是在等待httpClinet.get的成功返回,但就像我说的,我已经掌握了Angular + search-fu的知识,能够找到合适的单词去查找解决方案。
发布于 2018-11-26 05:04:46
httpClient.get返回一个可观察对象。你需要订阅它。
getData(key: string) {
this.segResponse$ = this.httpClient.get<SegmentResponse>(this.baseUrl + key).subscribe((response) => {
console.log('seg resp in service ' + response);
this.dataRetrieved.next(response);
});
}
https://stackoverflow.com/questions/53471737
复制相似问题