【问题标题】:angular 2 routeconfig case sensitivityangular 2 routeconfig 区分大小写
【发布时间】:2016-03-30 13:59:06
【问题描述】:

假设我有一个类似的路由配置:

@RouteConfig([
    { path: '/login', name: 'Login', component: LoginPageContainer }
])

可以像下面这样以 Angular 2 订阅路由器:

   this.router.subscribe((nextValue) => {
       this.router.navigate(['nextValue']);
    });

在给定的场景中,下一个值将全部小写,如“login”而不是“Login”。由于 routeconfig 以大写开头定义名称,因此路径将无法解析。

是否可以使 routeconfig 名称不区分大小写,或者有没有办法获得正确大小写的名称?我一直在搜索,但在这方面找不到任何东西。

【问题讨论】:

标签: routing angular uppercase angular2-routing


【解决方案1】:

name 字段是路由名称,必须拼写为PascalCase 以避免与路线路径的潜在混淆。

如果您想寻求解决方法,您可以使用navigateByUrl 来让它工作。该方法将采用基于URLInstruction,然后与该路由关联的组件将被加载。

this.router.subscribe((nextValue) => {
    this.router.navigateByUrl('/'+'nextValue');
});

【讨论】:

  • 完美,通过 url 导航工作在现场,是满足我需求的完美选择。出于其他查看者的目的,您的代码略有出入,并且对重定向的调用需要是正斜杠以避免转义字符: this.router.navigateByUrl('/' + 'nextValue');
  • @CreativeAbyss 更新了谢谢...但是你为什么要那样做..我仍然想知道它..
  • 除了在我的组件的 CanActivate() 挂钩中返回 false 之外,我还在我的根组件 (app.ts) 中订阅了路由器,以便当路由器更改 url 时快速检查身份验证/会话服务显示用户未通过身份验证我重定向到登录页面。
  • @CreativeAbyss 因为当你想用route..传递参数时,上述方式会变得混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2012-12-01
  • 2013-03-06
  • 2020-02-18
  • 2016-08-29
相关资源
最近更新 更多