【发布时间】:2017-08-10 11:51:23
【问题描述】:
我正在学习 Angular2,遵循 Angular.io 上的“英雄之旅”教程。在教程快结束时,我们设置了到详细信息页面的路由,并传递了一个指示要替换的英雄的参数。这是使用 ActivatedRoute 中的参数 Observable 处理的。我们使用 switchMap 从 params Observable 重定向到 Promise 根据参数返回我们真正想要的数据。
本教程中使用的语法很简洁,因此我尝试将其分解为构建块,以便更好地了解正在发生的事情。具体来说,我尝试将 右箭头符号 替换为我认为相同的实际功能。但是我的修改不起作用。
代码如下:
ngOnInit(): void {
this.route.params
.switchMap((params: Params) => this.heroService.getHero(+params['id']))
//.switchMap(this.getHero)
.subscribe(hero => this.hero = hero);
}
getHero(params: Params) : Promise<Hero> {
return this.heroService.getHero(+params['id']);
}
让我困惑的是为什么使用当前被注释掉的行而不是它上面的行,我得到一个错误:"Cannot read property 'getHero' of undefined."这两个版本的代码看起来和我一模一样。
【问题讨论】:
-
一个是方法,另一个是绑定
this的箭头函数。你确定它在.getHero上出错,而不是在函数内的.heroService上出错吗?
标签: javascript angular promise observable