0

我有一个结构如下的 ns-angular 应用程序:

app.component我有一个page-router-outlet2 页的主人

  • 登录
  • 主要的

路由配置如下:

const routes: Routes = [
    { path: '', redirectTo: 'start', pathMatch: 'full' },
    { path: 'start', loadChildren: './views/login/start.module#StartModule' },
    { path: 'main', loadChildren: './views/main/main.module#MainModule' }
];

@NgModule({
    imports: [NativeScriptRouterModule.forRoot(routes)],
    exports: [NativeScriptRouterModule]
})
export class AppRoutingModule { }

在主组件中,我有一个静态操作栏和一个router-outlet在这些组件之间导航的子组件。再次路由定义为:

const mainRoutes: Routes = [
    {
        path: '', component: MainComponent, children: [
            { path: '', redirectTo: 'main/explore', pathMatch: 'full' },
            { path: 'camera', loadChildren: './camera/camera.module#CameraModule' },
            { path: 'explore', loadChildren: './explore/explore.module#ExploreModule' }
        ]
    }
];

export const MainRouting: ModuleWithProviders = RouterModule.forChild(mainRoutes);

当前发生的情况是,如果我在 - 比方说 -explore组件(/main/explore)中,我导航到相机组件(/main/camera)并在我的 android 设备上按回,而不是返回到 explore 组件我去开始模块. 我阅读了有关角度导航的文档,但即使使用以下代码

android.on(AndroidApplication.activityBackPressedEvent, (data: AndroidActivityBackPressedEventData) => {
    this.routerExtensions.back();
});

我无法返回上一个组件。我将如何实现这一目标?

4

1 回答 1

1

尝试覆盖后按事件的默认 Android 行为,如 StackOverflow 答案所示

注意data.cancel设置为true

application.android.on(AndroidApplication.activityBackPressedEvent, (data: AndroidActivityBackPressedEventData) => {

    data.cancel = true; // prevents default back button behavior

});
于 2018-04-13T07:42:33.253 回答