Asume у вас есть основной маршрут и вспомогательный маршрут.
Дополнительный маршрут представляет собой часть приложения, где можно просмотреть детали.
Таким образом, большую часть времени aux-route-part не активируется / пуст
Когда пользователь нажимает кнопку детализации в основной части, задается вспомогательный маршрут и появляется компонент детализации.
Проблема в том, что каждый раз, когда задается вспомогательный маршрут, основная часть также перезагружается, что, для меня, является нежелательным поведением. Я имею в виду, основной маршрут не меняется. Почему он должен быть перезагружен?
Насколько я могу судить, это из-за RouteReuseStrategy по умолчанию (https://github.com/angular/angular/blob/51955bf6205272b1d2b98ff5b6dafd3823039ae2/packages/router/src/route_reuse_strategy.ts#L65). Как только меняется routeConfig
- что происходит, когда устанавливается вспомогательный маршрут - метод shouldReuseRoute
возвращает false
и, следовательно, компоненты не используются повторно.
Моя попытка решить эту проблему заключалась в создании пользовательской RouteReuseStrategy, в которой я бы сравнивал только основной маршрут в shouldReuseRoute
. Таким образом, если пользователь нажимает кнопку детализации, и устанавливается только вспомогательный маршрут, а основной маршрут остается прежним, shouldReuseRoute
возвращает true
. Но это приводит к тому, что вспомогательная часть приложения вообще не загружается. Похоже, что все компоненты router-outlets
используются повторно, и поэтому компонент детали не загружается, потому что его там не было раньше. Имеет смысл для меня ...
Прямо сейчас я понятия не имею, как это решить? Может кто-нибудь мне помочь? Был бы очень признателен.