首页 > 解决方案 > 在 Nativescript/angular 中处理反向路由的推荐方法?

问题描述

随着我们的页码增加,我开始遇到防止重复框架的困难,尤其是在使用侧抽屉时。如果我导航 A -> B -> A,我将得到 3 个实例,A 的 2 个和 B 的 1 个。这意味着我必须以某种方式确定导航是真正的导航还是“backToPreviousPage”。

理想情况下,我应该能够输入一条路线,它会智能地决定要做什么,例如:

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

应该等于 A - 导航 -> B - backToPreviousPage -> A

现在,我的计划是提供一项服务来记录导航到的最后一条路线。这样我就可以只做 myService.navigate() ,它会根据当前路由是否与前一个匹配,自动决定是否应该进行真正的导航或使用 routerExtensions.backToPreviousPage() 。

不过,在我这样做之前,我想确保没有一些明显的方式我应该处理这个问题。这种做法似乎是一种肮脏的方式。在我看来,Nativescript 路由器似乎应该默认处理这个问题,但我已经确认我的 A -> B -> A 场景会重新运行 ngOnInit,而且我还没有看到任何可能导致这种情况发生的选项。

标签: nativescriptangular2-nativescript

解决方案


页面路由器出口应跟踪堆栈/历史记录中的内容。根据 url 段,您可以决定是要导航回还是导航到新组件。

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

推荐阅读