Сохранять значения формы при перенаправлении и возврате в браузере, в angular

В моей программе для выполнения поиска форма заполняется (с использованием реактивной формы), при отправке создается json с фильтрами и перенаправляется на другую страницу, отправляя фильтры в качестве параметра. На другой странице служба отдыха используется для окончательного отображения результатов.

Проблема возникает, когда пользователь нажимает кнопку «Назад» в браузере. При возврате на предыдущую страницу фильтры в форме не сохраняются. Есть способ убедиться, что эти фильтры поддерживаются.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
1 498
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как насчет параметров маршрутизатора? Это делает вашу страницу закладкой и поддерживает кнопки браузера «назад» и «вперед».

http://localhost:4200/filter?input1=someData&input2=anotherData

Когда вы отправляете форму, вы также можете перенаправить на ту же страницу с параметрами.

Вот хорошая статья об этом

Итак, если ваши пользователи нажмут «назад» один раз, они окажутся в форме поиска с фильтрами. Если они снова нажмут «назад», они будут в пустой форме.


если вы не хотите использовать параметры маршрутизатора, вы можете сохранить данные в localStorage или sessionStorage и снова заполнить фильтры ngOnInit

export class Something implements OnInit {

   ngOnInit() {

      if (localStorage.getItem('search') !== undefined) {
         const filters = JSON.parse(localStorage.getItem('search'));
         // Do someting with it
      }
   }

   search(searchParams) {

      // Save your filters before redirect
      localStorage.setItem('search', JSON.stringify(searchParams));

      // Your code
   }
}

Это не совсем то, что мне нужно, но это хорошие идеи. Параметр localstorage может быть решением, но необходимо добавить еще немного логики, чтобы избежать того, что при попытке выполнить новый поиск не будут отображаться предыдущие фильтры. Спасибо за ответ в любом случае

Niko 15.07.2019 19:07
Ответ принят как подходящий

Как предложил Haytam95, используйте параметры (скорее queryParams). Но вместо перенаправления на одну и ту же страницу я делаю два перенаправления. В первом я использую replaceURL, чтобы заменить пустую форму. Таким образом, когда я возвращаюсь, я получаю форму с последним фильтром.

this.router.navigate([],
      {
        queryParams: {filters: btoa(JSON.stringify(filter)), page: 0 },
        relativeTo: this.activatedRoute,
        queryParamsHandling: 'merge',
        replaceUrl: true
       }).then(
        () => {
          this.router.navigate(['/pages/fallos/list'], { queryParams: {filters: btoa(JSON.stringify(filter)), page: 0 } });
        }
       );

Другие вопросы по теме