2016-09-29 3 views
10

Предположим, у нас есть два маршрута Dashboard и Profile. Dashboard имеет функцию динамических вкладок, такую ​​как Google spreadsheet. Я хочу сделать некоторые взаимодействия (строить диаграммы, визуализировать некоторые данные), создавая вкладки в Dashboard. Теперь, если я перейду на Profile, а затем вернусь обратно к Dashboard, я хочу посмотреть, что было раньше на этих вкладках в Dashboard. Это означает, что я хочу поддерживать состояние на стороне клиента. AFAIK при маршрутизации между компонентами, он воссоздает компоненты. Возможно ли сделать таблицу как приложение при использовании угловой 2-маршрутизации? Мне нужно использовать маршрутизацию, потому что в моем приложении я должен использовать функцию LazyLoading.Хотите предотвратить восстановление компонентов во время маршрутизации в Угловом 2

Итак, какова должна быть идея? Я новичок в угловых 2.

+0

Я думаю, что это возможно из маршрутизации. Я читал этот блог, но сам не пытался реализовать такую ​​расширенную маршрутизацию, которую вы ищете. https://vsavkin.com/angular-2-router-d9e30599f9ea#.2o8b488po – DNRN

+0

Я читал блог, а также новую книгу всавкин. Но для меня это слишком сложно понять концепцию. Вот почему я ищу лучшего и более легкого понимания:/ –

ответ

12

В настоящее время компоненты повторно используются только, когда изменяются только параметры маршрута, оставаясь на том же маршруте.

Если маршрут изменен, событие, когда новый маршрут добавляет один и тот же компонент, компонент воссоздается.

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

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

Update

Поддержка пользовательских стратегии повторного использования был добавлен в Angular2.

Смотрите также

+0

Но согласно моим требованиям, мне нужно создать несколько вкладок под 'Dashboard' (это может быть даже 100 вкладок, таких как электронная таблица google). Так что мне делать? Можете ли вы осветить свет на «RouterState»? –

+0

Я не думаю, что «RouterState» связан. Возможно, вы захотите посмотреть aux-маршруты и не отходить от текущего маршрута, чтобы показать «Профиль», а вместо этого показать его как модальный или похожий. Поддержка Aux-маршрутов все еще казалась немного ограниченной мне (но не слишком экспериментировал с ними). –

+0

Я упомянул «Профиль» в качестве примера:/но мое приложение похоже, создайте взаимодействия на вкладке, такие как электронная таблица google, и сохраните эти вкладки в 'Dashboard'. И мне нужно LazyLoading. Мое требование сложное, и у меня возникают проблемы с исходной архитектурой :( –

Смежные вопросы