首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件路由配置

条件路由配置
EN

Stack Overflow用户
提问于 2016-02-16 15:16:26
回答 2查看 1.9K关注 0票数 1

我想提出一个回应性的申请。它应该在一个小屏幕上有一个不同的导航(一系列的屏幕向下钻到细节页面)和一个大屏幕上(左面板+一个页面上的详细信息)。

实际上,我希望加载不同的组件,并根据屏幕/窗口大小有不同的路由配置。我希望能够在它们之间进行动态切换,因为窗口的大小在某一阈值以上/以下被调整。

由于Angular2中的路由是在组件级别上定义的,所以我的想法是创建一个根级组件,它将有条件地(ngIf)包括bigScreen.component.ts或smallScreen.component.ts。然后在大屏幕/小屏幕组件中定义路由本身。不过,这似乎不起作用。

我创建了一个扑通来展示。它基本上是一个从角教程的英雄导航的副本。我创建了额外的组件app/收集器.Component.ts,它被引导为根组件。然后嵌入AppComponent (本教程中的根组件),其中包含路由配置。

这会在控制台上产生一个错误:

代码语言:javascript
复制
Error: Component "AppContainer" has no route config.

看起来,如果嵌套组件有导航配置,则必须在根组件中创建导航配置。有没有办法绕过它来达到我所需要的?还是应该以不同的方式实现响应路由?

EN

回答 2

Stack Overflow用户

发布于 2016-06-29 10:15:01

在新路由器(>= RC.3)中可以使用https://angular.io/docs/js/latest/api/router/index/Router-class.html#!#resetConfig-anchor resetConfig

router.resetConfig([ { path:'team/:id',组件: TeamCmp,子程序:{ path:'simple',component: SimpleCmp },{ path:'user/:name',component: UserCmp }}));

您可能需要一个虚拟配置来在应用程序启动时初始化路由器,或者使用如何将从后端呈现的参数传递给angular2引导方法来延迟初始化,直到路由配置做好准备。

https://github.com/angular/angular/issues/11437#issuecomment-245995186提供了一个RC.6柱塞

票数 4
EN

Stack Overflow用户

发布于 2016-02-16 17:15:58

代码语言:javascript
复制
let routeMobile = [{path:'/', name: 'Home', component: MobileHomeComponent},
  {path:'/hero/:id',      name: 'Detail',   component: detailComponent}];

let routeDesktop = [{path:'/', name: 'Home', component: DesktopComponent}]

function checkForMobile(){
  //returns true for mobile
}
let finalRoute = checkForMobile() ?  routeMobile : routeDesktop;  

@Component({ ... })
@RouteConfig(finalRoute)
export class AppComponent { }

如果您非常希望它也能响应,只需在"resize"事件上重新加载页面即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35436184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档