我有一个服务调用正在从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