请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

其他第三方系统传递参数到angular

我有一个第三方系统,它通过? &的方式传递多个参数到angular,请问angular如何接受第三方传递的这种参数值,我通过this.routeinfo相关实现获取参数值是undefined,如何解决啊。

正在回答 回答被采纳积分+3

1回答

接灰的电子产品 2017-12-13 19:26:07

用下面方式获取路由参数

constructor(private route: ActivatedRoute>) {
    this.projectId$ = this.route.paramMap.map(p => <string>p.get('id'));
}


0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉1627455901 #1
    还是不行,是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。
    可以保证第三方参数值传递过来了的,如何解决呢?
    回复 有任何疑惑可以回复我~ 2017-12-14 07:55:06
  • 首先你要理解 angular 的路由是什么,angular 生成的是一个单页应用,也就是在服务器上不存在真正的路由路径,那些显示在浏览器栏上的路径只不过是一个显示而已,如果你刷新页面的话其实会导致 404。所以重定向回来的url 应该指向根,你要在根组件上去 catch 这个 url,获取参数,然后根据结果在 angular 中重新路由到你希望的组件页面
    回复 有任何疑惑可以回复我~ 2017-12-14 12:58:23
  • 这样就可以了: this.routeinfo.queryParamMap.map(p => <string>p.get('openid')).subscribe(o=>{
            this.openid=o;
            console.log(this.openid);
    回复 有任何疑惑可以回复我~ 2017-12-14 21:22:38
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信