我对angular-ui-router演示应用程序的情况非常类似:每当用户尝试访问需要auth的状态时,都会有一个钩子将其重定向到登录状态。附加要求是有人可能希望通过URL访问状态,并带有额外的查询字符串参数:username
,应该在登录页面的相应输入中自动填充。
我的州结构是这样的:
shell
抽象状态,它是所有其他状态的父级,类似于演示应用程序中的app
状态shell
州有url: '?username'
(如果我理解正确,则此参数应由其他所有州继承)login
组件具有绑定username: '<'
login
州的resolve
类似username: $transition$ => $transition$.params().username
整个登录/重定向机制完美运行。唯一的问题是,在login
的状态resolve
中params().username
未定义,即使在浏览器中我转到http://mysite/#/somestate?username=foo
之类的链接。
知道我做错了什么,或者我怎么能达到我追求的目标?
谢谢!
答案 0 :(得分:1)
我将回答我自己的问题:问题实际上是在登录重定向钩子中。在那里,我使用state.target('login', params, {location: false})
重定向到登录状态,我从params
获得了transition.router.stateService.params
,它从未拥有有效值。
只是尝试一下我发现实际上transition.params()
给了我正确的参数值,所以我现在可以使用这些参数重定向并且它可以正常工作。
我确实还有一个问题:我理想情况下在登录后我会重定向回到最初请求的状态并从查询字符串中清除这些参数。任何人都知道这是否可能/支持?