我有一個服務調用正在從MongoDB獲取數據。 這部分似乎正在工作,它在控制檯中正確記錄。Angular 2服務沒有更新到組件
此響應相當大,完全可能需要8秒才能完成數據。爲此,我希望能夠在檢索到數據後更新組件中的data[]
。
我目前的解決方案不起作用,我想知道實時檢索此問題的正確和最佳做法。即使回覆需要更長時間。
服務徵集的getData
export class DataService {
dataArray: any[];
constructor(private http: Http){}
//get all data
getData(): any {
console.log('Api is calling getData...');
this.http.get('http://localhost:8080/api/data').map((res: Response) => res.json()).subscribe((res: any) => {
this.dataArray = res;
console.log('JSON: ' + this.dataArray);
return this.dataArray;
});
}
}
這是正常進口到沒有錯誤的MainComponent。
MainComponent
export class MainComponent implements OnInit{
data: Array<any>;
//Inject service here to use for getting data
constructor(private dataService: DataService){}
ngOnInit(){
//Set View Data with Request from Server
this.data = this.dataService.getData();
console.log("Data: " + this.data);
}
}
正如你可以在這裏猜我的日誌中MainComponent
不顯示相應的數據和實際顯示undefined
。這恰好是我似乎無法逾越的錯誤。我知道必須有一個簡單的解決方案,但由於某種原因,我找不到直接的答案。
這就是我希望來到這裏,是如何更新MainComponent陣列的答案時,該服務已經收到請求
[等待來自服務器的HTTP請求的答覆可能的複製在Angular 2中](https://stackoverflow.com/questions/38316300/waiting-for-an-answer-from-server-on-http-request-in-angular-2) – Matt
可能的重複[如何返回在angular2中的Observable/http/async調用的響應?](https://stackoverflow.com/questions/43055706/how-do-i-return-the-response-from-an-observable-http-async-call -in-angular2) – n00dl3