我正阅读Angular 2 教程,学习如何使用带有参数的路由器通过id获取对象数据。
以下是与我将要提出的问题相关的代码。
下面是
以下是与我将要提出的问题相关的代码。
下面是
app.module.ts
中用于根据id引导到组件的路由定义。 {
path:'detail/:id',
component:HeroDetailComponent
}
从服务类中获取基于id的数据的服务方法
getHero(id: number): Promise<Hero> {
return this.getHeroes()
.then(heroes => heroes.find(hero => hero.id === id));
}
构造函数和OnInit方法(来自hero-details.component,用于显示数据)用于从URL中提取信息
constructor(
private heroService: HeroService,
private route: ActivatedRoute,
private location: Location
){}
ngOnInit():void{
this.route.params
.switchMap((params:Params) => this.heroService.getHero(+params['id'])
.subscribe(hero => this.hero = hero));
}
最后,我们来看一下我们正在提取的数据示例。id是数字类型,名称是字符串类型。
{ id: 11, name: 'Mr. Nice' }
问题:在ngOnInit
中,我们将id从字符串转换为this.heroService.getHero()
调用的参数之内。请问+params['id']
如何进行转换?我的猜测是由于我们在app.module.ts
文件中设置路由的方式,detail/:id
等同于params['id']
,但我想要一个清晰的解释,以便我将来可以确定自己在做什么。谢谢。