问题描述
有什么方法可以使页面的视图保持成角度,以便作为用户,当我重新访问相同的路线时,可以得到相同的视图。
例如RouteA
有一个搜索栏,当用户搜索某项内容时,它将在下面加载结果,现在,如果用户在该页面上进行了搜索,并且
之后,他离开该页面并移至RouteB
进行其他操作。当他重新访问该页面时,它应该具有相同的视图,即在搜索栏中搜索术语并在网格中加载数据。
解决方法
对于您的用例,您可以在用户导航到其他路线之前保存FormGroup
实例。
if (this.searchFormGroup.valid) {
this.searchService.setLastSearch(this.searchFormGroup);
}
setLastSearch的定义可能类似于
setLastSearch(searchFormGroup) {
this.lastSearch = searchFormGroup;
}
当用户重新访问该页面时,请使用ngOnInit
方法检查是否已经保存了搜索(导航前已保存的formGroup
实例)。
this.lastSearch = this.searchService.getLastSearch();
。如果答案是肯定的,请使用patchValue填充当前的formGroup实例。像下面这样
if (this.lastSearch) {
this.patchLastSearchedValue();
}
patchLastSearchedValue的代码可能类似于
patchLastSearchedValue(): void {
Object.keys(this.lastSearch.value).forEach(name => {
this.searchFormGroup.controls[name].patchValue(
this.lastSearch.controls[name].value
);
});
}