angular - передача queryParams активному маршруту перед переходом на другой маршрут - PullRequest
0 голосов
/ 27 июня 2018

У меня есть таблица данных ясности, где нажатие на строку откроет элемент, перенаправив из / organization / Overview в / organization /: id;

По причинам, связанным с UX, я бы хотел сохранить последний нажатый идентификатор в качестве queryParam, прежде чем перейти к навигации.

* 1005 например *

  1. пользователь щелкает элемент с идентификатором = 1234
  2. gehts маршрута обновлен до / организация / обзор? Id = 1234
  3. Перейти к / организация / 1234

Идея состоит в том, что когда пользователь нажимает кнопку возврата браузера, последний нажатый элемент будет выделен. Я знаю, что это поведение может быть легко реализовано в противном случае, но этот подход меня интересует. Ниже приведен метод openOrganization, который у меня есть.

openOrganization(organization){
    this.router.navigate([], {
        queryParams: { oid: organization.id },
        relativeTo: this.activatedRoute
    });
    this.router.navigate(['/admin/organizations', organization.id]);
}

Это не работает, потому что второй навигационный вызов, кажется, прерывает или отменяет первый, до его завершения.

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Вы должны подписаться на свой маршрутизатор и сделать снимок текущего маршрута после завершения навигации.
например:

lastUrl: string;
constructor(private _router: Router) {
  _router.events.filter(event => event instanceof NavigationEnd).subscribe(e => {
    this.lastUrl = e.url;
  });
}

И затем переменная lastUrl содержит маршрут, с которого вы пришли.
--- Редактировать
То же самое с параметрами: если у вас есть конкретные параметры для каждого URL-адреса, вы можете вместо получения URL-адреса последнего маршрута получить все параметры, через которые вы проходите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...