angular - 如何从 Angular 5 中的 URL 获取查询参数?

标签 angular typescript angular-routing

我正在使用 angular 5.0.3,我想用一堆查询参数启动我的应用程序,例如 /app?param1=hallo¶m2=123How to get query params from url in Angular 2? 中给出的每个提示对我不起作用。

关于如何获取查询参数的任何想法?

private getQueryParameter(key: string): string {
  const parameters = new URLSearchParams(window.location.search);
  return parameters.get(key);
}

这个私有(private)函数可以帮助我获取参数,但我认为这在新的 Angular 环境中不是正确的方法。

[更新:] 我的主要应用程序看起来像

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

  constructor(private route: ActivatedRoute) {}

  ngOnInit(): void {
    // would like to get query parameters here...
    // this.route...
  }
}

最佳答案

在 Angular 5 中,通过订阅 this.route.queryParams 来访问查询参数(请注意,以后的 Angular 版本 recommend queryParamMap,另请参阅其他答案) .

示例:/app?param1=hallo¶m2=123

param1: string;
param2: string;
constructor(private route: ActivatedRoute) {
    console.log('Called Constructor');
    this.route.queryParams.subscribe(params => {
        this.param1 = params['param1'];
        this.param2 = params['param2'];
    });
}

然而,路径变量由 this.route.snapshot.params 访问

示例:/param1/:param1/param2/:param2

param1: string;
param2: string;
constructor(private route: ActivatedRoute) {
    this.param1 = this.route.snapshot.params.param1;
    this.param2 = this.route.snapshot.params.param2;
}

关于angular - 如何从 Angular 5 中的 URL 获取查询参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47455734/

相关文章:

typescript - 在 TypeScript 中键入表示 "this very class"

angular - 我如何知道子元素何时在 Angular 中完成渲染?

javascript - 网址正在更改,但内容未更新

http - Angular 2 和 karma 测试和异步 HTTP

http - 使用 HTTP + toPromise() 时如何在 Angular 2 中设置超时?

javascript - ionic2登录后如何将菜单按钮显示到另一个页面

javascript - TypeScript:使用扩展运算符设置 Object.prototype

javascript - visual studio 代码 intellisense 不适用于 dojo amd 代码

javascript - 如何保护Angular4中的路由

typescript - Angular 2 和模板 : Unterminated string literal. 在第 6 列 24