2016-11-12 1 views
1

저는 Angular 2 + PrimeNG를 배우고 있습니다.이 빠른 시작 프로젝트를 공부하고 있습니다. https://github.com/primefaces/primeng-quickstart서비스에서 반환 한 배열 요소를 각도 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-promises /. 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); 
     } 
    }); 

}