как отслеживать компоненты при навигации в динамической загрузке компонентов - PullRequest
2 голосов
/ 12 мая 2019

У нас есть 3 основных режима навигации, которые показывают скрытый вид вкладки tab1, tab2, tab3. Помимо этого, есть навигация из sidenav.

Каждая вкладка загружает компонент динамически, и поэтому мы перемещаемся от одного компонента к другому.

Во-вторых, когда навигация от одного компонента к другому компоненту заканчивается и пользователь нажимает кнопку Done, он должен попасть на вкладку tab1 / tab2 / tab3, которая была изначально открыта в DOM (т. Е. Конец навигации и посадка на tab1 / tab2 / tab3 view), когда началась навигация по компонентам.

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

Здесь маршрутизация не связана только с загрузкой компонента в поле зрения.

Есть ли угловой способ достичь этого, учитывая данный сценарий?

Вот ссылка на стек:

https://stackblitz.com/edit/angular-basic-starter-dfqnp3?file=src/app/app.component.ts

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Используйте Angular router вместо создания / уничтожения компонентов.Что-то вроде /home/tab1 /home/tab2 settings/tab1 помогает пользователю понять, где он находится в приложении.

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

1 голос
/ 12 мая 2019

Похоже, у вас проблема с управлением состоянием.

Я предлагаю вам использовать службу, объявленную в модуле, достаточно высоком в иерархии, чтобы ее можно было увидеть среди ваших компонентов, где вы сможете сохранить свои данные.

Вы не можете сохранить состояние внутри компонента, так как он уничтожен, но вы можете использовать сервис для сохранения своего состояния и передачи его в качестве входных данных в компонент, чтобы его можно было инициализировать с необходимыми данными.

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

...