我目前正在通過Angular 2 tutorial並學習如何使用帶參數的路由器通過id獲取對象數據。路由參數類型轉換
下面是用於參考我會問的問題的代碼。
下面是基於ID
getHero(id: number): Promise<Hero> {
return this.getHeroes()
.then(heroes => heroes.find(hero => hero.id === id));
}
而引導至基於ID的分量
{
path:'detail/:id',
component:HeroDetailComponent
}
服務方法(從服務類),用於抓取數據內app.module.ts
路由定義用於從url中提取信息的構造函數和OnInit方法(來自hero-details.component,其中數據將被顯示)
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' }
問:在我們轉換ID從字符串到this.heroService.getHero()
調用的參數內大量ngOnInit
。 +params['id']
在轉換方面的工作原理如何?我的猜測是,這是由於我們在app.module.ts
文件中佈局路線,而detail/:id
等於params['id']
,但我希望有一個明確的解釋,以便我知道將來我在做什麼以確定性。謝謝
路由參數總是字符串,這取決於你想要用這個參數做什麼。 –