如何获取Angular 2中服务返回的数组元素?
问题描述:
我正在学习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
打破了应用程序。
所以我基本上试图在控制台中显示浏览器中显示的相同数据。有人可以帮助我呢?
谢谢! =)
答
您需要将依赖于内部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);
}
});
}
读http://blog.ninja-squad.com/2015/05/28/angularjs-承诺/。这是关于AngularJS 1的,但承诺和异步编程的原理是一样的。该服务不**返回**汽车。它返回汽车的承诺。汽车将仅在稍后**可用,在传递给回调函数的内部。 –