Angular 更改路由后如何保存表筛选器/页面?
我有一个报告表和自定义过滤器,在那里分页。然后我将路由更改为/:reportId。导航回表后,过滤器/分页被重置。仅当我从报告路线返回时(如果从其他路线返回,则重置过滤器),如何在路线更改时保存该信息。当我完全从报告路线过来时,如何钩住它Angular 更改路由后如何保存表筛选器/页面?,angular,Angular,我有一个报告表和自定义过滤器,在那里分页。然后我将路由更改为/:reportId。导航回表后,过滤器/分页被重置。仅当我从报告路线返回时(如果从其他路线返回,则重置过滤器),如何在路线更改时保存该信息。当我完全从报告路线过来时,如何钩住它 注意:我在tableComponent中的ngOnInit()中订阅服务http请求您必须在本地存储中存储信息,例如: filterData: {page1: {Paging: '', sort: [], filetype: ''}, page2: {Pagi
注意:我在tableComponent中的ngOnInit()中订阅服务http请求您必须在本地存储中存储信息,例如:
filterData: {page1: {Paging: '', sort: [], filetype: ''}, page2: {Paging: '', sort: [], filetype: ''}}
您必须适合任何页面,将信息存储在localStorage中,例如:
filterData: {page1: {Paging: '', sort: [], filetype: ''}, page2: {Paging: '', sort: [], filetype: ''}}
我将使用某种状态管理(,),或者您可以在服务中存储应用的过滤器、页面。我将使用某种状态管理(,),或者您可以在服务中存储应用的过滤器、页面。您可以在服务中的变量中存储过滤器和排序设置
let navigationExtras: NavigationExtras = {
queryParams: {
'page': currentPage,
'sortBy': 'date',
'filter': true
}
};
然后将该变量与导航一起使用
// Navigate to the table component with extras
this.router.navigate(['/table'], navigationExtras);
用它们来摆桌子
constructor(private route: ActivatedRoute) {
this.route.queryParams.subscribe(params => {
// update the table
});
}
优点是相同的URL将为您提供相同的表过滤器/排序状态,这在某些情况下可能很有用,缺点是您必须在添加参数时处理长URL
如果您正在寻找更复杂的解决方案,请务必查看NgRx(如@hohnzy所述)您可以将过滤器和排序设置存储在服务的变量中
let navigationExtras: NavigationExtras = {
queryParams: {
'page': currentPage,
'sortBy': 'date',
'filter': true
}
};
然后将该变量与导航一起使用
// Navigate to the table component with extras
this.router.navigate(['/table'], navigationExtras);
用它们来摆桌子
constructor(private route: ActivatedRoute) {
this.route.queryParams.subscribe(params => {
// update the table
});
}
优点是相同的URL将为您提供相同的表过滤器/排序状态,这在某些情况下可能很有用,缺点是您必须在添加参数时处理长URL
如果您正在寻找更复杂的解决方案,请务必查看NgRx(如@hohnzy所述)为表和表项使用父容器组件
{
path: 'table',
component: ContainerComponent,
children: [
{
path: '',
component: TableComponent,
},
{
path: ':id',
component: TableItemComponent,
}
]
},
将过滤器保存在TableComponent的Ngondestory()中。重置ContainerComponent的Ngondestory()中的筛选器。将数据保留在附加服务中。为表和表项使用父容器组件
{
path: 'table',
component: ContainerComponent,
children: [
{
path: '',
component: TableComponent,
},
{
path: ':id',
component: TableItemComponent,
}
]
},
将过滤器保存在TableComponent的Ngondestory()中。重置ContainerComponent的Ngondestory()中的筛选器。将数据保留在附加服务中。过滤数据的参数有多少?分页、排序(数组)、文件类型。因此,在URL中使用这些参数,单击“上一步”时,您将获得这些参数。如果可能,共享堆栈闪电。过滤数据的参数有多少?分页、排序(数组),filetypeSo在URL中获取这些参数,单击“上一步”时,您将获得这些参数。如果可能,共享stackblitz。我只需要在从报告路径返回表时保存这些参数。从另一条路线出发时,重置如何?如何钩住它?我只需要在从报告路径返回表时保存它。从另一条路线出发时,重置如何?怎么挂?谢谢你的推荐,我会试试的。NgRx在ReactJS中有点像Redux吗?@NateRiver是的,非常感谢您的推荐,我会试试。NgRx在ReactJS中有点像Redux吗?@NateRiver是的