Angular 路由器将数据传递给组件

Angular Router pass data to component

使用 angular 路由器将数据传递到组件是一个好习惯还是我应该改用服务?

目前组件获取的数据是这样的:

this.account = activatedRoute.snapshot.data.account

有几种方法可以将数据传递给 angular 组件。

对于 objects 之类的用户帐户,我会使用提供者(在组件初始化时准备好它)、服务(用于在应用程序周围共享)或守卫(例如,如果你想在什么时候导航出去未登录)。

当我想在不同的路由中重用相同的组件并给它一些关于 is 行为的提示时,我会使用路由器数据。

我遇到的另一个用例是使用激活的路由定义全局应用程序状态。每个路由都可以定义它的数据,服务监听路由器事件并存储合并状态。 它帮助我在大型应用程序中对标题、元数据、工具栏和菜单可见性等进行 route-based 配置...

如果要通过路由传递数据,这里有一个简单的例子。

让你的路线看起来像这样:

{ path: 'todo', component: TodoComponent, data: { id:'1', name:"Todo Title"} }

然后在你的组件中你可以这样做:

ngOnInit() {
      this.activatedroute.data.subscribe(data => {
          this.todo = data;
      })
}

这有用吗?