angular项目根据设备跳转到不同地址

我有两套项目,一套PC端,一套移动端(都是用angular写的);现在我想将这两套整合成一套,然后如果是移动设备就跳转到移动端;如果是PC设备就跳转到PC端。有两个入口(一个PC端入口,一个移动端入口)

阅读 1.6k
1 个回答

是怎么整合的?
如果两套入口的话,可以考虑在Nginx上面判断

代码都放一起,两套页面,一个入口的话,你可以考虑加上路由守卫CanActivate
在路由守卫里面判断当前url是否移动端url,当前设备是否移动端,如果不符合在重新指定路径
可以参考下面的代码片段

{
    path: '',
    component: DefaultComponent,
    canActivate:[PageGuardService],
    children: [
      // 业务子模块
     { path: 'system', loadChildren: () => import('./system/system.module').then(m => m.SystemModule) },

    ]
  }

@Injectable({
  providedIn: 'root'
})
export class PageGuardService implements CanActivate {

  constructor( private router: Router) { }

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    const url: string = state.url;
    if (this.isMobile(navigator.userAgent)&&!this.isMobileLink(url)){
      return this.router.parseUrl('移动端链接');
    }
    return true;
  }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进