Angular route.queryParams.subscribe返回角度类型脚本组件中未定义的

Angular route.queryParams.subscribe返回角度类型脚本组件中未定义的,angular,typescript,url-routing,angular2-routing,Angular,Typescript,Url Routing,Angular2 Routing,我需要将id作为参数传递给我的角度分量 this.route.queryParams.subscribe(params => { var a = params.id; } 在我的html中,我有如下内容 <a [routerLink]="['/viewjobdetail', currentJob.id]"> {{ currentJob.title }} </a> 在我的调用组件中,我有 import { Activ

我需要将id作为参数传递给我的角度分量

  this.route.queryParams.subscribe(params => {
  
  var a = params.id;
  }
在我的html中,我有如下内容

<a [routerLink]="['/viewjobdetail',  currentJob.id]">
    {{ currentJob.title }}
</a>
在我的调用组件中,我有

import { ActivatedRoute } from '@angular/router';
constructor(private route: ActivatedRoute){}

ngOnInit(): void {
this.route.queryParams.subscribe(params => {
  debugger;
  var a = params['id'];
  this.displayJobId = parseInt(params['id']);
});
但是当我检查它时,它总是显示未定义的,我在这里做错了什么?
}

您应该使用
params
paramMap
而不是
queryParams
,查询参数只能识别传递的查询参数,如
viewjobdail?id=23

queryParams
更好,因为
params
在将来的版本中可能会被弃用

this.route.paramMap.subscribe(paramMap => {
  debugger;
  var a = paramMap.get('id');
  this.displayJobId = parseInt(a);
});

您应该使用
params
paramMap
而不是
queryParams
,查询参数只能识别传递的查询参数,如
viewjobdail?id=23

queryParams
更好,因为
params
在将来的版本中可能会被弃用

this.route.paramMap.subscribe(paramMap => {
  debugger;
  var a = paramMap.get('id');
  this.displayJobId = parseInt(a);
});

我找到了解决办法。为了实现这一点,我们需要将查询参数与queryParams一起使用。我修改了我的html如下

<a [routerLink]="['/viewjobdetail']" [queryParams]="{id: currentJob.id}">
{{ currentJob.title }}
</a>
然后在我的调用组件中

  this.route.queryParams.subscribe(params => {
  
  var a = params.id;
  }

我找到了解决办法。为了实现这一点,我们需要将查询参数与queryParams一起使用。我修改了我的html如下

<a [routerLink]="['/viewjobdetail']" [queryParams]="{id: currentJob.id}">
{{ currentJob.title }}
</a>
然后在我的调用组件中

  this.route.queryParams.subscribe(params => {
  
  var a = params.id;
  }

因此,如果我使用queryParams,我应该如何在我的html a标记中声明它?@NithinPaul如果你想在html中使用queryParams,请按照刚才在我的回答中更新的代码中所述使用它我错误地使用了queryParams而不是paramMap,以及Ruben注释,如果您使用了paramMap,您不需要在htmlSo中更改任何内容。如果我使用queryParams,我应该如何在我的html a标记中声明它?@NithinPaul如果您想在html中使用queryParams,请按照刚才在我的回答中更新的代码中所述使用它。除了Ruben注释之外,我错误地使用了queryParams而不是paramMap,如果使用paramMap,则无需更改html中的任何内容