我的目标是将
desktop
和 mobile
页面分开。原因是desktop
页面用户体验流程是“滚动到部分”。同时,mobile
页面用户体验流程是“导航到下一部分”。
问题:
desktop
用户将加载mobile
页面。对于 mobile
用户也是如此。这是当前解决方案的可视化图:
我尝试过的:
canLoad
来显示 desktop
页面。我的期望:
desktop
用户访问路径checkout/1
时,会加载desktop
页面。mobile
用户访问路径checkout/1
时,不会加载desktop
页面,而是加载mobile
页面。我的实际结果:
desktop
用户访问路径checkout/1
时,会加载desktop
页面。mobile
用户访问路径checkout/1
时,不会加载任何页面。checkout-page-routing.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { IsDesktopGuard } from '../../../domain/usecases/is-desktop/is-desktop.guard';
const routes: Routes = [
{
path: '',
loadChildren: () => import("../checkout-scroll-page/checkout-scroll-page.module").then(m => m.CheckoutScrollPageModule),
canLoad: [IsDesktopGuard]
},
{
path: '',
loadChildren: () => import("../checkout-navigate-page/checkout-navigate-page.module").then(m => m.CheckoutNavigatePageModule)
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class CheckoutPageRoutingModule { }
您需要为桌面端和移动端路由指定合适的路径,目前有两个路由具有相同的路径,所以桌面端始终会先加载(最先匹配到的)
const routes: Routes = [
{
path: 'desktop',
loadChildren: () => import("../checkout-scroll-page/checkout-scroll-page.module").then(m => m.CheckoutScrollPageModule),
canLoad: [IsDesktopGuard]
},
{
path: 'mobile',
loadChildren: () => import("../checkout-navigate-page/checkout-navigate-page.module").then(m => m.CheckoutNavigatePageModule)
}
];
如果您仍然遇到问题,请分享 stackblitz 进行调试