【发布时间】:2016-08-29 09:35:07
【问题描述】:
【问题讨论】:
标签: angular
【问题讨论】:
标签: angular
您必须使用来自@angular/router 的ActivatedRoute,就像任何其他参数一样,与非可选参数没有区别。
更多信息: https://angular.io/docs/ts/latest/guide/router.html#!#optional-route-parameters
【讨论】:
export class HeroComponent implements OnInit {
constructor(private _activatedRoute: ActivatedRoute, private _router:Router) {
_router.routerState.queryParams.subscribe(
data => console.log('queryParams', data['st']));
【讨论】:
lang 设置为宠物查询字符串,请使用它,否则回退到英文。据我所知,无法确定当前订阅是否已针对此页面完成,这意味着如果它不存在,它将永远等待。 (可能是 RxJs 超时?)
route.queryParams()。 AFAIK 传递给subscribe() 的回调将在每次路由更改时被调用,当路由上没有?someid=value 或;someid=value 时,data['someId'] 将返回null。
route.queryParams() 似乎只在查询部分发生变化时才被调用。例如,假设我有一个 url /cats/:page?pagesize=x 如果我导航到下一页,但没有更改页面大小,则不会调用回调。当我有route.params 和route.queryParams 并且想要根据两者调用rest API 时,这是一个问题。通常我会将它们压缩在一起,但如果我对route.queryParams 的“回调”可能会或可能不会被调用,那么我仍然需要超时。
router.events (stackoverflow.com/questions/35912932/…) 并从_activatedRoute.routerState 读取值。 AFAIR 还有一个问题是这些值仅在超时后可用(抱歉不记得确切)我认为这是一个开放票证的已知问题。