采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我有一个第三方系统,它通过? &的方式传递多个参数到angular,请问angular如何接受第三方传递的这种参数值,我通过this.routeinfo相关实现获取参数值是undefined,如何解决啊。
用下面方式获取路由参数
constructor(private route: ActivatedRoute>) { this.projectId$ = this.route.paramMap.map(p => <string>p.get('id')); }
还是不行,是null。 第三方系统是这样传递参数到angular web应用的: return Redirect(ConfigurationManager.AppSettings["DefaultPage"] + "?openid=" + userInfo.openid + "&nikename=" + userInfo.nickname + "&sex=" + userInfo.sex + "&province=" + userInfo.province + "&city=" + userInfo.city + "&headimgurl=" + userInfo.headimgurl); Angular Web是这样获取参数的: let abc=this.routeinfo.paramMap.map(p => <string>p.get('openid')) console.log(abc); 打印这个Abserable<string> 类型的abc是Array[0]的。 如果如下获取打印: this.routeinfo.paramMap.map(p => <string>p.get('openid')).subscribe(o=>{ this.openid=o; console.log(this.openid); }) 打印结果为null。 可以保证第三方参数值传递过来了的,如何解决呢?
首先你要理解 angular 的路由是什么,angular 生成的是一个单页应用,也就是在服务器上不存在真正的路由路径,那些显示在浏览器栏上的路径只不过是一个显示而已,如果你刷新页面的话其实会导致 404。所以重定向回来的url 应该指向根,你要在根组件上去 catch 这个 url,获取参数,然后根据结果在 angular 中重新路由到你希望的组件页面
这样就可以了: this.routeinfo.queryParamMap.map(p => <string>p.get('openid')).subscribe(o=>{ this.openid=o; console.log(this.openid);
登录后可查看更多问答,登录/注册
全网首个介绍官方 Material 组件库用法与 Redux 在 Angular 中的应用
1.1k 7
2.2k 4
984 19
936 11
971 9