2017-02-14 66 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是你想要的。 –