我需要为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'”
我可以通过以下方式临时解决此问题:
离子服务
等待看到错误
在导入顶部的移动登录模块之前,先删除注释
请参见离子编译移动登录模块
现在它可以工作了,直到我重新启动离子服务
看来我欺骗了编译器,使它缺少模块
可以通过某种方式解决此问题吗?我只需要根据环境变量在两组不同的路由之间切换即可。