角度 UI 路由器 - 状态查询字符串参数不起作用

Angular UI Router - state query string parameter not working

本文关键字:字符串 参数 不起作用 查询 状态 UI 路由器 角度      更新时间:2023-09-26

我有一个与angular-ui-router演示应用程序非常相似的场景:每当用户尝试访问需要身份验证的状态时,都会有一个钩子将他重定向到登录状态。额外的要求是,有人可能希望通过带有附加查询字符串参数的 URL 访问状态:username该参数应自动填充在登录页面的相应输入中。

我的状态结构是这样的:

  • 有一个shell抽象状态,它是所有其他状态的父级,类似于演示应用程序中的app状态
  • 这个shell状态有url: '?username'(如果我理解正确,这个参数应该被所有其他状态继承(
  • 我的login组件具有绑定username: '<'
  • login州有这样resolve username: $transition$ => $transition$.params().username

整个登录/重定向机制完美运行。唯一的问题是,在login的状态resolve中,即使我在浏览器中转到类似 http://mysite/#/somestate?username=foo 的链接,params().username也是未定义的。

知道我做错了什么,或者我如何实现我所追求的吗?

谢谢!

我将回答我自己的问题:问题实际上出在登录重定向钩子上。在那里,我使用 state.target('login', params, {location: false}) 重定向到登录状态,并且我从从未具有有效值的transition.router.stateService.params获取params

只是尝试一下,我发现实际上transition.params()给了我正确的参数值,所以我现在可以使用这些参数重定向并且它工作正常。

不过,我仍然有一个问题:理想情况下,我希望在登录后我重定向回最初请求的状态并从查询字符串中清除这些参数。有人知道这是否可能/支持吗?