我有一个Angular 2应用程序与几个嵌套的子视图。但它将通过几个router-output
显示在同一页面上。
const routes: Routes = [
{
path: 'queue/:date/:offset/:type',
component: BundleListComponent,
resolve: {
response: BundleListResolve
},
children: [
{
path: ':bundleId', component: PointListComponent,
resolve: {
response: PointListResolve
},
children: [
{
path: ':pointId', component: TaskListComponent,
resolve: {
response: TaskListResolve
},
children: [
{
path: ':taskId', component: TaskDetailComponent,
resolve: {
response: TaskDetailResolve
}
},
{ path: '', component: EmptyComponent }
]
},
{ path: '', component: EmptyComponent }
]
},
{ path: '', component: EmptyComponent }
]
},
{
path: 'queue',
component: QueueRedirectComponent
}
}
例如:
#/queue/2017-01-05/480/20/57f4c26507b36e3684007b52/1/57fb0abb07b36e39d8e88df8/1
假设您有一个包含某些元素的页面:
因此,我现在所做的是基于window.location获得URL并通过/
拆分这个字符串来获得参数的数量。但它是更硬编码的。
有做同样事情的经验吗?我如何区分哪条路由当前处于活动状态?
我相信Scott的答案有一个问题,他在服务的构造函数中使用了ActivatedRoute。此路由将无法更新。
我想了另一个办法,也许能看出你的兴趣。它再次出现在对路由使用data
属性上,但现在使用了另一个解析服务:
您将需要一个类似这样的RouterConfig
,其中为每条路由添加state:stateResolve
和一个包含状态名称的数据对象:
const routes: RouterConfig = [{
path: 'queue/:date/:offset/:type',
component: BundleListComponent,
resolve: {
response: BundleListResolve,
state: StateResolve
},
data: {
state: 'Bundle'
},
...
]
@Injectable()
export class StateResolve implements Resolve<string> {
constructor(private stateService: StateService) {}
resolve(route: ActivatedRouteSnapshot): string {
let state: string = route.data['state']
this.stateService.setState(state);
return state;
}
}
显然,您将需要一个stateService
,它具有setstate
方法,但我想从这里可以很好地说明。
也许使用resolve
保护有点古怪,但如果您仔细想想,您正在尝试在显示路由之前解析数据。在本例中,是data变量内部的状态,因此使用resolve
访问data
属性是有意义的
Angular2有一个routerLinkActive指令,如果路由是活动的,它会向元素添加类。我想在路由不活动时添加一个类。有办法做到这一点吗?
所以我有一些路线,比如<code>/category/tech</code>和<code</categority/tech/new<code>和<code>/category/tech/old</code>等等 他们都使用 或者我必须分别定义它们,就像
使用Appium(用于windows上的android),我需要检查登录场景,输入用户和密码后,点击登录按钮,新(等待)活动打开,1。请指导我如何获得当前活动,即在按下登录按钮之前。2.按下登录按钮后,如何导航到等待活动,以便检查登录是否成功。
问题内容: 我正在尝试实现一种语言切换器,如果用户在“ en”侧的任何给定页面上单击“ de”,它将带他们进入“ de”侧的该页面。如果我使用console.dir $ state参数,它将使用给定$ state的“当前”属性公开我想要的值。如果我尝试用$ state.current来console.dir $ state.current来关注我想要的值,那么它只会给出父状态属性(我的当前视图是嵌
问题内容: 我只是在设置这个: :id和:slug是动态参数。 现在我想去那条路线() 例如url: 哪个是最简单的方法? 我尝试了这个: 但有时在切换页面路由时它在控制台中不返回任何内容 问题答案: 当前路由允许您使用正则表达式。注入服务并探索当前路线对象。即部分: 这是使用它的方式(例如,通过控制器方法检查是否应激活当前菜单项(具有动态部分)):