2016-11-12 82 views
1

我正在學習Angular 2 + PrimeNG,我正在研究這個快速啓動項目:https://github.com/primefaces/primeng-quickstart如何獲取Angular 2中服務返回的數組元素?

這是一個CRUD,效果很好。所有數據都在我的瀏覽器中顯示在一張表格中。大!

現在我試圖改變一點點的代碼。所有的工作都很好,除了我愚蠢的代碼。

export class AppComponent { 

    displayDialog: boolean; 

    car: Car = new PrimeCar(); 

    selectedCar: Car; 

    newCar: boolean; 

    cars: Car[]; 

    constructor(private carService: CarService) { } 

    ngOnInit() { 
     this.carService.getCarsMedium().then(cars => this.cars = cars); 

     //THIS IS MY CODE: 
     console.log(this.cars);    
     for (let entry of this.cars) { 
      console.log(entry); 
     } 
    } 

第一個console.log給我一個undefined消息。然後for打破了應用程序。

所以我基本上試圖在控制檯中顯示瀏覽器中顯示的相同數據。有人可以幫助我呢?

謝謝! =)

+1

讀http://blog.ninja-squad.com/2015/05/28/angularjs-承諾/。這是關於AngularJS 1的,但承諾和異步編程的原理是一樣的。該服務不**返回**汽車。它返回汽車的承諾。汽車將僅在稍後**可用,在傳遞給回調函數的內部。 –

回答

1

您需要將依賴於內部then(...)可觀察到的結果代碼,否則代碼將在值之前執行可

ngOnInit() { 
    this.carService.getCarsMedium().then(cars => { 
     this.cars = cars 
     //THIS IS MY CODE: 
     console.log(this.cars);    
     for (let entry of this.cars) { 
      console.log(entry); 
     } 
    }); 

} 
相關問題