如何在Angular2中获取可选查询参数?

如何在Angular2中获取可选查询参数?,angular,Angular,这是我要处理的URL 如何读取这些参数(id、lang和search)。您必须使用@angular/router的ActivatedRoute,就像任何其他参数一样,与非可选参数没有区别 更多信息,请访问: 您必须使用@angular/router的ActivatedRoute,就像任何其他参数一样,与非可选参数没有区别 更多信息,请访问: 另见 另请参见谢谢您的回答。但是,在导入ActivateRoute时,它显示了一个编译时错误,即模块“/var/www/public/node_modu

这是我要处理的URL


如何读取这些参数(id、lang和search)。

您必须使用@angular/router的ActivatedRoute,就像任何其他参数一样,与非可选参数没有区别

更多信息,请访问:

您必须使用@angular/router的ActivatedRoute,就像任何其他参数一样,与非可选参数没有区别

更多信息,请访问:

另见


另请参见

谢谢您的回答。但是,在导入ActivateRoute时,它显示了一个编译时错误,即模块“/var/www/public/node_modules/@angular/router/index”没有导出成员“ActivateRoute”。您没有指定哪个版本,ActivateRoute仅在RC5中可用,我如何在RC1中获得它?谢谢您的回答。但是,在导入ActivateRoute时,它显示了一个编译时错误,即模块“/var/www/public/node_modules/@angular/router/index”没有导出成员“ActivateRoute”。您没有指定哪个版本,ActivateRoute仅在RC5中可用,我如何在RC1中获得它?我猜最终版本是ActivateRoute。但是,如何获得可选参数?e、 g.如果
lang
设置了pet querystring,请使用它,否则返回英语。就我所见,没有办法确定当前订阅是否已经完成,这意味着如果它不存在,它将永远等待。(可能是RxJs超时?)您只需订阅
route.queryParams()
。如果传递给
subscribe()
的回调在每次路由更改时都会被调用,那么当没有
?someId=value
时,
data['someId']
将返回
null
;someid=value
出现在路线上。非常感谢,这很有用
route.queryParams()
似乎只有在查询部分发生更改时才被调用。例如,假设我有一个url
/cats/:page?pagesize=x
,如果我导航到下一页,但没有更改页面大小,则不会调用回调。当我有
route.params
route.queryParams
并希望根据这两个参数调用RESTAPI时,这是一个问题。通常我会将它们压缩在一起,但是如果我对
路由.queryParams
的“回调”可能会被调用,也可能不会被调用,那么我仍然需要一个超时。您可以将其报告为错误,或者订阅
路由器.events
(),并从
激活的路由.routerState
读取值。AFAIR还有一个问题,即值只有在超时后才可用(对不起,我记不清了)。我认为这是一个已知的问题,对于打开的票证。我猜最终版本是ActivatedRoute。但是,如何获得可选参数?e、 g.如果
lang
设置了pet querystring,请使用它,否则返回英语。就我所见,没有办法确定当前订阅是否已经完成,这意味着如果它不存在,它将永远等待。(可能是RxJs超时?)您只需订阅
route.queryParams()
。如果传递给
subscribe()
的回调在每次路由更改时都会被调用,那么当没有
?someId=value
时,
data['someId']
将返回
null
;someid=value
出现在路线上。非常感谢,这很有用
route.queryParams()
似乎只有在查询部分发生更改时才被调用。例如,假设我有一个url
/cats/:page?pagesize=x
,如果我导航到下一页,但没有更改页面大小,则不会调用回调。当我有
route.params
route.queryParams
并希望根据这两个参数调用RESTAPI时,这是一个问题。通常我会将它们压缩在一起,但是如果我对
路由.queryParams
的“回调”可能会被调用,也可能不会被调用,那么我仍然需要一个超时。您可以将其报告为错误,或者订阅
路由器.events
(),并从
激活的路由.routerState
读取值。AFAIR还有一个问题,即值只有在超时后才可用(抱歉,我不记得确切的时间),我认为这是一个已知的问题。
export class HeroComponent implements OnInit {
  constructor(private _activatedRoute: ActivatedRoute, private _router:Router) {
    _router.routerState.queryParams.subscribe(
      data => console.log('queryParams', data['st']));