首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Angular应用程序中从URL片段中检索参数?

如何在Angular应用程序中从URL片段中检索参数?
EN

Stack Overflow用户
提问于 2017-11-07 17:20:00
回答 3查看 8.4K关注 0票数 8

我在我的Angular应用程序中使用了OAuth隐式流身份验证方法。要检索访问令牌,我需要解析以下字符串中的参数:

http://localhost/authentication#access_token={0}&expires_in={1}&user_id={2}

在一些调查之后,我没有发现任何从这样的URL中检索参数的机制(我发现的所有机制都是基于手动字符串拆分的。这是否意味着Angular没有“开箱即用”的机制来解析URL片段中的参数,而最好的方法是使用substring()split()方法?

EN

回答 3

Stack Overflow用户

发布于 2017-11-07 17:31:15

您可以使用ActivatedRoute完成此操作:

代码语言:javascript
复制
  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    console.log(this.route.snapshot.fragment); // only update on component creation
    this.route.fragment.subscribe(
      (fragments) => console.log(fragments)
    ); // update on all changes
  }

要检索查询参数,只需在此代码中将fragment替换为queryParams即可。

票数 5
EN

Stack Overflow用户

发布于 2021-03-25 04:34:58

代码语言:javascript
复制
constructor(private activatedRoute: ActivatedRoute) {

    const fragment = activatedRoute.snapshot.fragment;

    const parts = fragment.split('&');

    const params = parts.reduce((map, part) => {
        const pieces = part.split('=');
        map[pieces[0]] = pieces[1];
        return map;
    }, {});

    console.log(params);
}
票数 1
EN

Stack Overflow用户

发布于 2017-11-07 17:57:54

代码语言:javascript
复制
import {Router, ActivatedRoute, Params} from '@angular/router';
import {OnInit, Component} from '@angular/core';

@Component({...})
export class MyComponent implements OnInit {

  constructor(private activatedRoute: ActivatedRoute) {}

  ngOnInit() {
    // subscribe to router event
    this.activatedRoute.params.subscribe((params: Params) => {
        let userId = params['user_id'];
        console.log(userId);
      });
  }

}

如果您想获取查询参数,请将this.activatedRoute.params替换为this.activatedRoute.queryParams

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47154085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档