Как кэшировать компонент после активации его маршрута - PullRequest
0 голосов
/ 23 февраля 2019

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

У меня сложное представление для обоих дочерних компонентов.

Когда я переключаюсь между этими двумя маршрутами, для визуализации представления требуется слишком много времени.(Я использовал некоторый интерфейс начальной загрузки, ngbootstrap и еще несколько библиотек)

мои данные не меняются между этими 2 дочерними компонентами, только просмотр изменений деталей, который занимает время.

, поэтому мне было интересноЕсть ли способ кэшировать этот компонент, как только они называются?улучшить производительность?

заранее спасибо.

1 Ответ

0 голосов
/ 23 февраля 2019

Это хороший вопрос, я никогда не использовал его, но вы можете достичь этого с помощью RouteReuseStrategy .Вы не предоставили свой конкретный пример, но обычно вам нужно использовать методы:

  • shouldAttach - возвращает true / false , чтобы определить, является ли Метод retrieve будет вызываться для извлечения компонента вместо создания его с нуля.
  • retrieve - возвращает RouteHandle или null , если он вызван - он может вернуть сохраненный (кэшированный) компонент в виде DetachedRouteHandle .
  • shouldDetach - возвращает true / false , чтобы определить, * store метод будет вызван.
  • store - ничего не возвращает , но принимает detachedTree , что вы можете сохранить (кеш) для сохранения состояния вашего компонента и последующего возврата его из извлечения метода.

Звучит сложно, но это проще сделать, чем заменить router-розетка на какую-то нестандартную вещь. Вот парень очень хорошо описывает это и приводит пример.Надеюсь, это поможет.

...