угловой маршрутизатор уничтожает хранимый компонент маршрута по требованию - PullRequest
0 голосов
/ 01 мая 2019

У меня есть угловое приложение, в котором я реализую класс стратегии повторного использования маршрута, который проверяет значение, сохраненное в моем объекте маршрута в методе shouldDetach(). Как это:

  shouldDetach(route: ActivatedRouteSnapshot): boolean {
        if (route.data.shouldReuse == true) {
            return true;
        }
        else {
            return false;
        }
    }

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

Единственный способ, который я нашел до сих пор, это сделать:

  1. Программно изменить значение shouldReuse моего маршрута на false в объекте конфигурации маршрута.
  2. Перейдите к другому маршруту, используя this.router.navigate().
  3. Перейдите к маршруту, который я хочу уничтожить.
  4. Затем перейдите на другой маршрут.

Только тогда ngOnDestroy() срабатывает на маршруте, который я пытаюсь уничтожить ... позволяя мне отписаться от наблюдаемых.

Это, очевидно, очень хакерское средство уничтожения сохраненного компонента моего маршрута. Мне нужен какой-то другой способ сделать это в ответ на действия пользователя.

Можно ли получить доступ к методу .destroy на маршруте напрямую? Как насчет других методов в моем классе стратегии повторного использования маршрута, могу ли я использовать любой из них для достижения этой цели?

...