如何从Angular ActivatedRoute获取参数

时间:2019-04-04 20:11:34

标签: angular parameters routing

我正在尝试使用可观察性从激活的路线中获取prameter:id。当我在控制台上打印参数时,我会得到正确的:id值。但是this.id并非如此。我得到值NaN。 你能告诉我是什么问题吗

export class RecipeEditComponent implements OnInit {
  id: number;
  editMode = false;

  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    this.route.params.subscribe(
      (params: {id: string}) => {
        this.id = +params.id;
        console.log(this.id);
      }
    );
}
}

4 个答案:

答案 0 :(得分:0)

我认为以下代码将在您的情况下起作用:

ngOnInit() {
this.heroes$ = this.route.paramMap.pipe(
  switchMap(params => {
    // (+) before `params.get()` turns the string into a number
    this.selectedId = +params.get('id');
    return this.service.getHeroes();
  })
);

}

您也可以尝试以下方法:

this.sessionId = this.route
  .queryParamMap
  .pipe(map(params => params.get('id') || 'None'));

答案 1 :(得分:0)

更改为this.id = +params.get('id')

您应该使用方法get(),因为它为给定参数id返回单个值。 因为params不是以id为值的键,所以您得到一个错误。

export class RecipeEditComponent implements OnInit {
  id: number;
  editMode = false;

  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
  // paramMap replaces params in Angular v4+
   this.route.paramMap.subscribe(params: ParamMap => {
        this.id = +params.get('id');
        console.log(this.id);     
  });
}

答案 2 :(得分:0)

像这样检索参数:

  ngOnInit() {
this.route.params.subscribe(
  (params: Params) => {
    this.id = +params["id"];
    console.log(this.id);
  }
);

} }

答案 3 :(得分:0)

问题出在路由定义中: 放置:而不是::