2017-02-14 69 views
1

存储响应所以我有这样的服务在Angular2Angular 2 HTTP。在阵列

fetchData(){ 
    return this.http.get('https://ng-workout.firebaseio.com/Workouts/.json').map(
     (res) => res.json() 
    ); 
} 

然后将此组件

export class HomeComponent { 

workouts = []; 

constructor(private dataService: DataService){ 
} 

ngOnInit(){ 
this.dataService.fetchData().subscribe(
    data=> this.workouts =data 
    ); 
    console.log(this.workouts); 
    } 
} 

所以事情是,当我控制台登录“this.workouts”则返回0,一个空阵列。不应该有json文件中的所有记录吗?

回答

1

您需要的console.log()代码移到回调传递给订阅

ngOnInit(){ 
    this.dataService.fetchData().subscribe(
    data=> { 
     this.workouts =data; 
     console.log(this.workouts); 
    }); 
} 

fetchData(观测)是异步。您传递给订阅的功能在数据可用时执行。

+0

好的,但是如果我想在另一个页面上使用锻炼数组,每当我想从数组中获取信息时,我都会调用该订阅? – raulnoob

+0

也许http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an-angular-2-http-network-call-in/36291681# 36291681是你想要的。 –