Я начинаю изучать Angular 2, и у меня возникают проблемы с использованием Promise.then для возврата моего объекта из службы. В настоящее время я использую только фиксированный массив (COACHES) для имитации вызова базы данных. Функция в моем сервисе выглядит следующим образом
getCoach(id: number) {
return Promise.resolve(COACHES).then(
coaches => coaches.filter(coach => coach.id == id)[0]
);
}
Затем я использую это в моем coach_detail.component.ts в хуке ngOnInit, чтобы получить объект тренера, который я хочу, используя параметры маршрута:
export class CoachDetailComponent implements OnInit {
coach: Coach;
constructor(
private _coachService: CoachService,
private _routeParams: RouteParams) {}
ngOnInit() {
let id = +this._routeParams.get('id');
this._coachService.getCoach(id).then(coach => this.coach = coach);
console.log(this.coach);
}
}
Я вижу в своей консоли, что обещание возвращается обратно в мой компонент, но console.log(this.coach)
возвращается как undefined
Любая помощь очень ценится, так как я использую аналогичную логику в другом компоненте, чтобы вернуть весь список тренеров, и это отлично работает!