Рекомендуемый способ обработки обратной маршрутизации в Nativescript / angular? - PullRequest
0 голосов
/ 27 февраля 2019

По мере того, как наши номера страниц растут, я начинаю сталкиваться с трудностями, предотвращающими дублирование кадров, особенно при использовании бокового ящика.Если я перемещаюсь A -> B -> A, я получу 3 экземпляра, 2 из A и 1 из B. Это означает, что мне нужно каким-то образом решить, является ли навигация реальной навигацией или «backToPreviousPage».

В идеале я должен просто иметь возможность указать маршрут, и он будет разумно решать, что делать, например:

router.navigate(['A'])
router.navigate(['B'])
router.navigate(['A'])

Должен быть равен A - навигация -> B - backToPreviousPage -> A

Прямо сейчас я планирую создать сервис для записи последнего маршрута, по которому был пройден маршрут.Таким образом, я могу просто сделать myService.navigate (), и он автоматически решит, должна ли он выполнять реальную навигацию или использовать routerExtensions.backToPreviousPage (), основываясь на том, совпадает ли текущий маршрут с предыдущим.

Прежде чем я это сделаюТем не менее, я хочу убедиться, что нет никакого очевидного способа справиться с этим.Этот вид кажется грязным способом сделать это.Мне кажется, что маршрутизатор Nativescript должен обрабатывать это по умолчанию, но я уже подтвердил, что мой сценарий A -> B -> перезапускает ngOnInit, и я не видел никаких опций, которые могли бы это сделать.

1 Ответ

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

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

constructor(pageRouterOutlet: PageRouterOutlet) {
    // `outlet` is private
    (<any>pageRouterOutlet).outlet.states.forEach((state) => {
        console.log(state.segmentGroup);
    });
}
...