2016-11-14 28 views
0

我有一个非常类似的场景角度UI路由器演示应用程序:无论何时用户试图访问需要身份验证的状态,有一个钩子将他重定向到登录州。额外的要求是有人可能想要通过URL访问一个具有附加查询字符串参数的状态:username应该在登录页面的相应输入中自动填充该参数。Angular UI路由器 - 状态查询字符串参数不工作

我的状态结构如下所示:

  • 存在是父母在演示程序
  • 类似app国家所有其他国家此shell州有url: '?username'一个shell抽象状态(如果我正确理解这个参数然后应该受到所有其他国家继承)
  • login组件具有约束力的username: '<'
  • login国家有resolve像这样username: $transition$ => $transition$.params().username

整个登录/重定向机制完美的作品。唯一的问题是,在login的状态resolveparams().username是未定义的,即使在浏览器中我去链接如http://mysite/#/somestate?username=foo

任何想法我做错了什么,或者我怎么能实现我所追求的?

谢谢!

回答

1

我要回答我自己的问题:问题实际上是在登录重定向挂钩。在那里,我重定向到登录状态state.target('login', params, {location: false}),我从transition.router.stateService.paramsparams,从来没有有效的值。

只是想出来的东西我发现实际transition.params()给了我正确的参数值,所以我现在可以重定向与这些参数,它工作正常。

我确实有一个问题仍然存在:理想情况下,我会在登录后像这样重定向到最初请求的状态并从查询字符串中清除这些参数。任何人都知道这是可能的/支持的?