如何解决Angular 10 路由在cordova 中不起作用
当我想打包到适用于 Android 的 Cordova 应用程序时,路由器出现问题。问题似乎出在路由器模块上,但我不知道出了什么问题。
问题是这样的 当我在浏览器中运行 angular 应用程序时,一切都运行良好。所有路由都正常工作,我做了一个也正常工作的部署。但是当我想用“dist”文件夹中的编译代码构建apk时,似乎路由不起作用。
这是我在应用模块中导入的主要路由
const routes: Routes = [
{
path: '',component: AppLayoutComponent,canActivate: [AuthGuard],children: [
{ path: '',loadChildren: () => import('./pages/modules/dashboards/dashboards.module').then(m => m.DashboardsModule),canActivate: [CheckTokenGuard] },{ path: 'orders',pathMatch: 'full',loadChildren: () => import('./pages/modules/orders/orders.module').then(m => m.OrdersModule),canActivate: [CheckTokenGuard] }
]
},{
path: '',component: AuthLayoutComponent,children: [
{ path: 'session',loadChildren: () => import('./pages/modules/session/session.module').then(m => m.SessionModule) }
]
},{
path: '**',redirectTo: 'session/not-found'
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes)
],exports: [RouterModule]
})
export class AppRoutingModule { }
然后,auth 守卫看起来像这样:
export class AuthAdminGuard implements CanActivate {
constructor(private router: Router) { }
public canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean {
if (localStorage.getItem('sessiontoken')) {
if (JSON.parse(localStorage.getItem('sessiontoken')).type === 'ADMIN') {
return true;
}
}
// not logged in so redirect to login page with the return url
localStorage.removeItem('sessiontoken');
this.router.navigate(['session/signin']);
return false;
}
}
Auth 布局组件如下所示:
<div>
<router-outlet></router-outlet>
</div>
正如我所说,这实际上在本地主机甚至我的服务器中都有效,但是当我生成 apk 时,它会自动重定向到“会话/未找到”路径,就像它无法识别根“会话/登录”一样”。
我使用 ng build --aot --output-hashing all
构建应用程序,并使用 <base href="./">
更改基本 href 并将cordova 脚本放在 index.html 中
我尝试了所有方法,但似乎没有任何效果。请帮忙
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。