angular 2 通过服务传递参数而不是路由器参数
angular 2 passing parameters through service rather than router parameters
在组件之间传递参数时,我们可以使用如下
onSelect(hero: Hero) {
this.router.navigate( ['HeroDetail', { id: hero.id }] );
}
但是当要传递的数据很复杂时,上面的内容会使 URL 看起来很乱。我试图通过父级别的服务传递参数并且它工作正常。然后 onSelect()
变成
onSelect(hero: Hero) {
this._heroService._dataStore.hero = hero;
this.router.navigate( ['HeroDetail' );
}
在 ngInit()
中,我从 this._heroService._dataStore.hero.id
中检索到了 id
。这使 URL 更干净。
我的问题是这种方法有什么缺点吗?如果是,人们会如何解决这些缺点?
我认为一个缺点是您将无法像 url 参数那样刷新页面和保留数据。
在组件之间传递参数时,我们可以使用如下
onSelect(hero: Hero) {
this.router.navigate( ['HeroDetail', { id: hero.id }] );
}
但是当要传递的数据很复杂时,上面的内容会使 URL 看起来很乱。我试图通过父级别的服务传递参数并且它工作正常。然后 onSelect()
变成
onSelect(hero: Hero) {
this._heroService._dataStore.hero = hero;
this.router.navigate( ['HeroDetail' );
}
在 ngInit()
中,我从 this._heroService._dataStore.hero.id
中检索到了 id
。这使 URL 更干净。
我的问题是这种方法有什么缺点吗?如果是,人们会如何解决这些缺点?
我认为一个缺点是您将无法像 url 参数那样刷新页面和保留数据。