Ionic 4:在启动应用程序时以编程方式为移动和台式机版本设置不同的路由

时间:2019-06-28 21:15:36

标签: angular ionic-framework

我需要为Ionic 4(基于Angular 7)中的小型设备“移动”和大型设备“桌面”提供不同的UI。但是,似乎Ionic的编译/打包过程缺少某些模块。

我试图基于isMobile()函数在启动时设置不同的路由。

// import { LoginPageModule as DesktopLogin } from './desktop/login/login.module';

// routes for desktop
const DESKTOP_ROUTES: Routes = [
  { 
    path: 'login',
    loadChildren: './desktop/login/login.module#LoginPageModule',
  }
];

// routes for mobile
const MOBILE_ROUTES: Routes = [
  { 
    path: 'login',
    loadChildren: './mobile/login/login.module#LoginPageModule',
  }
];

// switch between routes depending on where we are
const USED_ROUTES = isMobile() ? MOBILE_ROUTES : DESKTOP_ROUTES;

@NgModule({
  imports: [
// use the routes
    RouterModule.forRoot(USED_ROUTES, { preloadingStrategy: PreloadAllModules, 
      enableTracing: false })
  ],
  exports: [RouterModule]
})
export class AppRoutingModule { }

以上代码在“桌面”模式下有效,但在“移动”模式下会产生 “错误:找不到模块'./mobile/login/login.module'”

我可以通过以下方式临时解决此问题:

  1. 离子服务

  2. 等待看到错误

  3. 在导入顶部的移动登录模块之前,先删除注释

  4. 请参见离子编译移动登录模块

  5. 现在它可以工作了,直到我重新启动离子服务

看来我欺骗了编译器,使它缺少模块

可以通过某种方式解决此问题吗?我只需要根据环境变量在两组不同的路由之间切换即可。

0 个答案:

没有答案