2017-09-04 22 views
0

以下は私のAPIコールです。インターセプターがあり、localstorageからこのデータを取得しています。データは文字列化されて保存されます。私がそれを返すとき、私はobservable.of(cachedata)によって観察可能に変換されます。観測可能なデータはサブスクリプションで利用できません

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

私はそれは私がこの呼び出しを購読する場合は、データが利用可能で取得していない

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

を引き起こす印刷コンポーネント

ngOnInit() { 
     const userid = this.platformService.currentUserId; 
     console.log(this.platformService.getApplications(userid)); 
} 

からそれを呼びました。

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('app '+ applications)が表示されません。

ご協力いただければ幸いです。前もって感謝します。

+0

あなたのコードは、サブスクライブブロック内のコードは、HTTP一度呼ばれるべきという意味では有効と思われるなら、私に知らせますgetコールが正常に解決されました。コンソールに何かエラーがありますか? – Fjut

答えて

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() 

は、どのような今までにこのis.tryサーバの応答を返すと、その作業:)

+0

これは機能していません、error 'subscribe'プロパティは 'void'型には存在しません。 –

+0

getApplications(userid:string){ this.httpclient.get(this._getAPIUrl( 'user /' + userid + '/ applications') ) .map((res:Response)=> res.json())}これを試してみてください。 –

+0

私の場合、ローカルストレージからこのオブジェクトを取得していて、httpresponseオブジェクトを保存していて、それを元に戻して文字列に保存していました。だから問題はhttpresponseオブジェクトは文字列形式で保存することはできませんでしたし、私はそれは通常のオブジェクトに解析することはできません。私はjsオブジェクトに変換するための無効なjsonを取得していました。これが問題でした。 –

関連する問題