订阅中没有可观察到的数据

时间:2017-09-04 13:11:24

标签: angular angular2-services

以下是我的api调用,我之间有拦截器,所以我从localstorage获取这些数据。数据被字符串化并保存。当我返回它时,我将通过observable.of(cachedata)转换为observable。

  getApplications(userid: string): Observable<any> {
    let data =this.httpclient.get(this._getAPIUrl('user/' + userid + '/applications'))
      .map((res: Response) => res.json())
      return data;
  }

我是从组件

中调用它的
  ngOnInit() {
        const userid = this.platformService.currentUserId;
        console.log(this.platformService.getApplications(userid));
}

打印结果

Observable {_isScalar: false, source: Observable, operator: MapOperator}

如果我订阅此电话,则数据无法使用。

 this.platformService.getApplications(userid)
  .subscribe(applications => {
            console.log('app ' + applications);
            const menuItems: MenuItem[] = [];
            menuItems.push(
                new MenuHeaderItem({
                    type: MenuItemType.Header,
                    title: 'Applications',
                    description: null
                }));
            Object.keys(applications).map(element => {
                menuItems.push(this.formatconversion(applications[element]));
            });
            this.menu = menuItems;
        });

console.log(&#39; app&#39; +应用程序)没有到来。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您的代码存在问题 而不是这个

getApplications(userid: string): Observable<any> {
let data =this.httpclient.get(this._getAPIUrl('user/' + userid + '/applications'))
  .map((res: Response) => res.json())
  return data;

}

使用此

getApplications(userid: string): Observable<any> {
this.httpclient.get(this._getAPIUrl('user/' + userid + '/applications'))
  .map((res: Response) => res.json())

}

无需返回。

res.json()

将返回服务器响应的所有内容。请告诉我它是否工作:)