У меня есть угловое приложение, в котором я реализую класс стратегии повторного использования маршрута, который проверяет значение, сохраненное в моем объекте маршрута в методе shouldDetach()
. Как это:
shouldDetach(route: ActivatedRouteSnapshot): boolean {
if (route.data.shouldReuse == true) {
return true;
}
else {
return false;
}
}
По большей части я хочу, чтобы компонент, возвращаемый маршрутом, был кэширован, когда пользователь просматривает страницу ... другими словами, я хочу, чтобы любая пользовательская настройка состояния сохранялась, и я хочу, чтобы подписки rxjs сохранялись. Но иногда при определенном вводе пользователем я хочу иметь возможность сбросить маршрут и разрешить запуск onDestroy для компонента маршрута.
Единственный способ, который я нашел до сих пор, это сделать:
- Программно изменить значение
shouldReuse
моего маршрута на false
в объекте конфигурации маршрута.
- Перейдите к другому маршруту, используя
this.router.navigate()
.
- Перейдите к маршруту, который я хочу уничтожить.
- Затем перейдите на другой маршрут.
Только тогда ngOnDestroy()
срабатывает на маршруте, который я пытаюсь уничтожить ... позволяя мне отписаться от наблюдаемых.
Это, очевидно, очень хакерское средство уничтожения сохраненного компонента моего маршрута. Мне нужен какой-то другой способ сделать это в ответ на действия пользователя.
Можно ли получить доступ к методу .destroy
на маршруте напрямую? Как насчет других методов в моем классе стратегии повторного использования маршрута, могу ли я использовать любой из них для достижения этой цели?