2017-09-18 202 views
0

类变量订阅响应我有这个下面的方法,如何分配在角2

public getResults(page: Page): Observable<PagedData<CorporateEmployee>> { 
      var companyData1:Observable<PagedData<CorporateEmployee>>; 
      this.getUsersData().subscribe(users=>{ 
        //companyData1.push(users['info']); 
        alert('local func2'); 
        companyData1 = Observable.of(users['info']).map(data => this.getPagedData(page,users['info'])); 
       }); 
      alert('local func1'); 
      //alert(this.companyData); 
      return companyData1; 
      // this.getUsers(); 
     } 

还有一方法分贝值,

getUsersData():Observable<any[]>{ 
     alert('called func'); 
     return this._http.get(this._productUrl+'get_users_data',this.header) 
     .map((response:Response)=><any[]>response.json()) 
     .do(data=>{console.log(data['info']);this.companyData = data['info'];}) 
     .catch(this.handleError); 
    } 

在这里,还有什么是错的。我无法将其分配给类变量。我想订阅json响应到我的类变量。即使我分配,它也没有任何东西。同时提醒该变量,它显示'未定义'。

+1

的getResults函数返回一个不确定的。 companyData1在订阅内分配,该订阅是async – kimy82

+0

getResults是一个服务方法,由以下代码调用: –

+0

'setPage(pageInfo){ console.log(pageInfo); this.page.pageNumber = pageInfo.offset; this.serverResultsService.getResults(this.page).subscribe(pagedData => { this.page = pagedData.page; this.rows = pagedData.data; //alert(JSON.stringify(pagedData.data)) ; }); }' –

回答

0

订阅做这样的事情:

ngOnInit() { 
    console.log(this._userService) 
    this._userService.getUsersData().subscribe(data => { 
     this.d = data; 
    }, error => console.log(error)); 

服务:

public getUsersData():Observable<any[]>{ 
     return this._http.get('response.json') 
     .do(data=>{ 
      this.x = data; 
      console.log(data); 
     }) 
     .catch(this.handleError); 
    } 

plunker:因为现在还没有分配函数返回时http://plnkr.co/edit/OxjJnSp89BjYQitR35OZ?p=preview

+0

'@Injectable() export class MockServerResultsService { private doctors = []; 构造(私人_http:HTTP){ this._http.get( 'http://jsonplaceholder.typicode.com/users/') .MAP((数据)=> data.json()) .subscribe ((data)=> {this.doctors.push(data); console.log(this.doctors); alert(JSON.stringify(this.doctors)); //显示数据 }); alert(JSON.stringify(this.doctors)); //显示'[]' }'我的订阅还有什么错误。而警报我得到评论。 ** @ Carbosound1 ** –

+0

'return Observable.of(this.doctors).map(data => this.getPagedData(page));'我想要医生的上述代码结果输入到getPagedData方法。但是服务类的医生变量除了订阅区块之外没有任何东西。 –