Сохранение состояния страницы поиска после перехода назад со страницы сведений в Angular
Я новичок в angular, и у меня есть требование поддерживать состояние страницы результатов поиска (то есть сохранять значения сортировки и фильтрации сетки результатов поиска), когда пользователь переходит на страницу сведений, щелкая ссылку в результатах поиска. сетки и снова перейдет на страницу поиска. Я пытался использовать CustomReuseStartegy, но у меня есть 2 проблемы:
- Необходимо обновить результаты поиска, когда пользователь вносит некоторые изменения на странице сведений.
- После того, как страница отделена. Это не привязывается снова. (когда пользователь переходит на какую-либо другую страницу (другую страницу, а не страницу с подробностями) и возвращается на страницу поиска, страница не перезагружается.
Было бы замечательно, если бы кто-то мог дать представление о том, как и когда повторно подключать компоненты, используя стратегию повторного использования маршрута или другое решение, отвечающее моим требованиям.
1 ответ
Если вам нужно поддерживать состояние между компонентами (страницами), вы должны использовать сервис.
Сохраните данные в сервисе со страницы поиска и покиньте страницу. Когда вы вернетесь на страницу поиска, получите данные из сервиса.
Кроме того, вы можете хранить данные в localStorage или sessionStorage, если это соответствует вашим требованиям.
Если вы используете Angular 1.x, нажмите здесь.
Для Angular 2+ нажмите здесь.
Я хотел сохранить параметры поиска при переходе на страницу с подробностями только тогда, когда пользователь нажимает кнопку "Назад".
Для этого я использовал Location, чтобы добавить новый элемент в историю платформы.
this.location.go(`/items/${this.category}/${this.color}/`);
Поместил это в модуль маршрутизации:
{ path: 'items/:category/:color/', component: ItemsComponent}
{ path: 'items', component: ItemsComponent}
Затем я использовал маршрут, чтобы увидеть, есть ли параметры:
const category = this.route.snapshot.paramMap.get('category');
const locations = this.route.snapshot.paramMap.get('color');