5
我想捕获使用Angular 2.0的查询字符串参数,并且很难。我有像这样ActivatedRoute.queryParams is undefined
http://localhost:5000/?id_token=eyJ0eXAiO ....
一个URL,我希望能够捕捉到的id_token前路由扎根的价值,我失去了参数。我发现这个问题GitHub的主题
https://github.com/angular/angular/issues/9451
但这使用不再工作的方法已过时。我曾尝试以下方法
var foo = this.activatedRoute.queryParams.subscribe(params => {
console.log(params);
let id = params['id_token'];
console.log(id);
});
console.log(this.router.routerState.snapshot.root.queryParams["id_token"]);
var bar = this.activatedRoute.params.subscribe(
(param: any) => console.log(param['id_token']));
我试图在构造这些方法以及我的组件的ngOnInit(),但控制台总是显示未定义。我是否在错误的地方做这件事。我无法改变QS,因为它是由Azure AD创建的。
我有一个类似的问题。我已经尝试了OP提供的所有内容以及您所陈述的内容。我不知道OP是否与我有同样的问题,但我正在以我的路线作为登录回调,而不是从应用程序中的其他地方导航。 我的网址是'http:// myhost /?code = 1234#/ auth/callback',在组件实例化之前,路由器很快重新路由到'http:// myhost /#/ auth/callback'。 –
@JonTinsman你解决了这个问题吗?我面临的确切问题 – Dino
@masterfan我不得不删除哈希导航。我的问题的原因是auth服务器构建重新路由时,它并没有将“代码”放在最后,而是使用了一个将散列放在查询参数后面的构建器。主开发人员使用哈希导航的原因似乎不再需要,只要我们做了'http:// myhost/auth/callback?code = 1234',我就可以通过activateRoute访问查询参数。 snapshot.queryParams [ '代码']' –