2016-08-10 1 views
1

Мой методметод Get возвращает неопределенное значение, хотя внутри метода значение не является пустым

getOrganizations() : any[]{ 

this._http.get(this._url) 
     .map(res => res.json()) 
     .subscribe(
      data => { 
      console.log(data.responseData.org_list); 
      return data.responseData.org_list; 
      }, 

мой JSON является

{"status":0,"statusMessage":"Success","responseData":{"org_list":[{"organizationName":"orgName1","summary":"org1Summary"}]},"errors":[]} 


console.log(data.responseData.org_list); 

печатает [Объект]

но когда я называю этот метод от такого компонента:

constructor(private _service: OrganizationService){ 
} 

ngOnInit(){ 
    this.organizations = this._service.getOrganizations(); 
    console.log(this._service.getOrganizations()); 
    console.log(this.organizations);  
    } 

Я получаю undefined в обоих консольных выходах

В чем могут быть причины этого?

ответ

0

Вы должны реорганизовать ваш метод следующим образом:

getOrganizations() : any[]{ 
    return this._http.get(this._url) 
    .map(res => res.json()) 
    .map(data => data.responseData.org_list); 
} 

и назвать это таким образом:

constructor(private _service: OrganizationService){ 
} 

ngOnInit(){ 
    this._service.getOrganizations() 
    .subscribe(organizations => { 
     this.organizations = organizations; 
    }); 
} 

Не забывайте, что наблюдаемые асинхронным и вы не можете вернуть что-то непосредственно .. .

0

Там нет в вашем

getOrganizations() : any[]{ 
нет
0

Из-за асинхронной природы HTTP звонков я бы предложить эту установку:

getOrganizations(): Observable { 
    return this._http.get(this._url) 
     .map(res => res.json().responseData.org_list); 
} 

И в ваш компонент просто подписаться на ваш метод обслуживания:

constructor(private _service: OrganizationService){ 
} 

ngOnInit(){ 
    this._service.getOrganizations() 
     .subscribe((data) => { 
      this.organizations = data; 
      console.log(this.organizations); 
     } 
    );  
} 

 Смежные вопросы

  • Нет связанных вопросов^_^