Search code examples
angularparametersroutes

How to get parameters from the Angular ActivatedRoute


I'm trying to get the prameter :id from my activated route using observables. When I print params on the console I get the right values for :id. But it's not the case for this.id. I get the value NaN. Can you tell me what is the problem

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);
      }
    );
}
}

Solution

  • Change to this.id = +params.get('id').

    You should use the method get() because it returns a single value for the given parameter id. You were getting an error because params is not a key with id as a value.

    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);     
      });
    }