Angular RouteReuseStrategy с дополнительными маршрутами (повторное использование только основной части) - PullRequest
0 голосов
/ 14 мая 2019

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 используются повторно, и поэтому компонент детали не загружается, потому что его там не было раньше. Имеет смысл для меня ...

Прямо сейчас я понятия не имею, как это решить? Может кто-нибудь мне помочь? Был бы очень признателен.

...