首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular EventEmitter返回未定义的对象

Angular EventEmitter返回未定义的对象
EN

Stack Overflow用户
提问于 2018-11-26 04:40:11
回答 1查看 138关注 0票数 1

我正在为学校做一个项目,但由于缺乏使用Angular的经验,我遇到了麻烦。我有一个带有一堆复选框选择的left-nav组件,当用户选择其中一个“代码”时,API调用将转到我们的数据存储,以检索给定"key“的所有值。

代码语言:javascript
运行
复制
this.dataService.getData(key);

从那时起,我得到了一个不同的组件,它监听数据的检索,然后生成一个图。我面临的问题是,数据服务成功地进行了API调用并返回了JSON响应,但我不知道如何将该数据/对象传递给时间图。

代码语言:javascript
运行
复制
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的一个属性(字符串)。

代码语言:javascript
运行
复制
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的知识,能够找到合适的单词去查找解决方案。

EN

回答 1

Stack Overflow用户

发布于 2018-11-26 05:04:46

httpClient.get返回一个可观察对象。你需要订阅它。

代码语言:javascript
运行
复制
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);
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53471737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档