Как получить параметры из Angular ActivatedRoute - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь получить праметр: id из моего активированного маршрута, используя наблюдаемые. Когда я печатаю params на консоли, я получаю правильные значения для: 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 голосов
/ 22 апреля 2019

Проблема была в определении маршрута: установка: вместо ::

0 голосов
/ 04 апреля 2019

Изменить на 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);     
  });
}
0 голосов
/ 05 апреля 2019

Получить параметры, как это:

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

} }

0 голосов
/ 04 апреля 2019

Я думаю, что следующий код будет работать в вашем случае:

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'));
...