Angular 2 通过服务而不是路由器参数传递参数



当参数从一个组件传递到另一个组件时,我们可以使用以下

  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 参数那样保留数据。

最新更新