我从WebAPI上单击按钮获取数据,然后将组件导航到其他组件以显示此数据,这个技巧对我来说很好,但问题是当我刷新页面时,我的数据为空,请提供一些信息解决方案或示例以保留相同的数据。 预先感谢
component.ts //where I'm getting data onClick
onSubmit(){
this.departmentService.GetDepartmentSearchResults(this.modelSearch1.value.Department, this.modelSearch1.value.Year, this.modelSearch1.value.No).subscribe(res => {
this.objDepartmentsSearchedResults = res as DepartmentsSearchedResultsModel[];
this.departmentService.objDepartmentsSearchedResults = this.objDepartmentsSearchedResults;
this._router.navigate(['departments/search-results']);
});
}
service.ts //where I'm passing data to varaible
objDepartmentsSearchedResults: DepartmentsSearchedResultsModel[];
其他component.ts //where I want to show this data
ngOnInit(){
console.log("results listing : ", this.departmentServices.objDepartmentsSearchedResults);
}
答案 0 :(得分:1)
您可以使用一种称为localStorage的东西,它可以将数据保存在任何组件中,并在其他任何组件中使用。
因此,在您的情况下,您只需将表单数据放入本地存储中,然后在另一个组件中使用它即可。
请参考使用方法。
答案 1 :(得分:0)
您可以使用localStorage/sessionStorage
来存储和检索数据。
但是,最好的方法是从同一页面本身完成路线(页面)数据。
假设您要从
路由items(ItemListComponent) --> items/:id(ItemDetailsComponent)
您可以从items
页面( ItemListComponent )传递与ID相关联的项目数据。因此, ItemDetailsComponent 可能不需要额外的调用来获取数据。
items/:id
直接(由其他人加载)或刷新,则从items
页面传递的数据将丢失。 :id
,就可以拥有路径参数根据您的示例,考虑将部门,年份,否作为路由查询参数传递。如果数据是从上一页传递过来的,请使用它。否则,使用这些查询参数进行服务器调用(在刷新时或在其他人访问该路由时直接加载页面时)
page1.component.ts
onSubmit(){
const {Department, Year, No} = this.modelSearch1.value;
this._router.navigate([`departments/search-results?department=${Department}&year=${Year}&no=${No}`]);
}
page2.component.ts
ngOnInit(){
this.activatedRoute.queryParams.subscribe(params => {
const Department = params.get('department');
const Year = params.get('year');
const No = params.get('no');
// make departmentServices call to get data
...
});
}