2016-11-12 54 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); 
     } 
    }); 

} 
相关问题