订阅Angular中的查询字符串参数

时间:2017-08-08 10:51:55

标签: angular typescript angular-router

我已经看过很多在Angular 2+中订阅查询字符串参数的例子,但我似乎无法让它工作

e.g。 How get query params from url in angular2?

这是我的代码:

import { ActivatedRoute, Router } from '@angular/router';
...
export class MyComponent implements OnInit,OnDestroy {
  private a: boolean = true;
  private b: boolean = true;

  constructor(route: ActivatedRoute)  {
  ...

  ngOnInit(): void {    
    this.route.queryParams.subscribe((queryParams:any) => {
      this.a = queryParams.a;
      this.b = queryParams.b;
     });

我遇到的问题是this似乎没有引用我的组件设置ab我想用来驱动*ngIf语句不工作

我做错了什么?

4 个答案:

答案 0 :(得分:3)

以下代码适用于Angular 5.

import { ActivatedRoute, Router } from '@angular/router';
...
export class MyComponent implements OnInit, OnDestroy {
  private a: boolean;
  private b: boolean;

  constructor(private route: ActivatedRoute)  {
  this.a = true;
  this.b = true;
  ...
  }

  ngOnInit(): void {    
    this.route.queryParams.subscribe(queryParams => {
      this.a = queryParams['a'];
      this.b = queryParams['b'];
  });

您可以尝试检查它是否有效吗?

答案 1 :(得分:0)

我认为你的问题是你的a和b是私人的......你必须在你的html中使它们成为PUBLIC的最佳用途:

null

答案 2 :(得分:0)

它对我有用...

let comp = this;
ngOnInit(): void {
this.route.queryParams.subscribe(queryParams => {
  comp.a = queryParams['a'];
  comp.b = queryParams['b'];
});

答案 3 :(得分:-2)

你正在失去'这个'。您应该创建函数并将其绑定到此组件并将其放在订阅回调上。  你也可以保存这个 const self = this