Ionic 5, Angular 9 Удалить параметры запроса из URL

У меня есть PWA и мобильное приложение с Ionic 5. Я нажимаю URL-адрес в электронном письме, которое перенаправляет меня по универсальным ссылкам.

https://example.com/?param1=value1&param2=value2

Моя цель — использовать параметры для создания нового объекта при загрузке страницы, а затем удалить параметры и перейти на следующую страницу. Я использую местоположение, которое выглядит так.

this.route.queryParams.subscribe(
  params => {
    if (params.create) {
      const navParams = params;

      // Do something with params         

      this.location.replaceState("/");
      this.navCtrl.navigateForward("/another-page/:id)
    }
  }
)

Все это работает хорошо, и параметры удаляются из URL-адреса, но проблема в том, что когда я возвращаюсь назад с помощью ion-back-button, он отправляет меня обратно на домашнюю страницу, но параметры загружаются снова. Я предполагаю, что queryParams не полностью очищены с помощью this.location.replaceState("/").

Я попробовал this.navCtrl.setRoot(""), прежде чем перейти на следующую страницу, но это не сработало.

Вы можете посоветовать? Спасибо.


person ACES    schedule 01.04.2020    source источник


Ответы (2)


Попробуйте перейти на страницу, подобную этой, когда вы делаете this.navCtrl.navigateForward:

https://example.com/nextpage/?params

добавив nextpage между ними, вы сделаете то, чего хотите, но добавит эту дополнительную следующую страницу к вашему URL-адресу.

таким образом, когда вы вернетесь назад, предыдущий параметр исчезнет.

person arman codex    schedule 02.04.2020
comment
Это не решает проблему. Мне нужно сбросить стек навигации, который не подходит. - person ACES; 05.04.2020
comment
Вы пытались this.activatedRoute.queryParams.subscribe() подписаться на изменение параметра на своей https://example.com/ странице, а затем при запуске изменения вы переходите к https://example.com/ - person arman codex; 05.04.2020

Не уверен, что вам удалось решить эту проблему, но вы можете попробовать это...

import { ActivatedRoute } from '@angular/router';

...
...

const paramValue = this.activatedRoute.snapshot.queryParamMap('paramKey');
person user14620751    schedule 11.11.2020