3
我开始学习Angular 2,并且遇到了使用Promise.then从服务返回对象的问题。我目前只使用固定数组(COACHES)伪造数据库调用。在我服务的功能如下Angular 2 Promise问题
getCoach(id: number) {
return Promise.resolve(COACHES).then(
coaches => coaches.filter(coach => coach.id == id)[0]
);
}
然后我用这在我的coach_detail.component.ts在ngOnInit钩来获得主教练的对象我想用路线PARAMS:
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
任何帮助是非常赞赏,因为我使用了相似的逻辑在不同的组件返回教练的完整列表,并能正常工作!
但是我不是在组件中定义的“coach”变量上调用console.log吗? 'this._coachService.getCoach(id)'应该将返回的对象分配给'this.coach'。我的问题的确是我的箭头功能没有正确分配 –
嗯,你的代码看起来很好。你能用例子来创造一个沉睡者吗? – Sasxa
有点笨拙,但在这里你去:https://plnkr.co/edit/Sk4GH2mgoJ2XkQ7Tr1qN我谈论的问题是当你进入“教练”页面,然后尝试选择一个教练的名字。 –