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;
})
}
这有用吗?
使用 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;
})
}
这有用吗?