Olá, como estão?
Estou com um problema no Angular quando tento capturar o parâmetro de uma rota qualquer, não consigo exibí-lo pois o this.route.snapshot.params é um objeto sempre vazio. Já tenho com paramMap.get('nomeDoParametro') e o resultado é sempre nulo... Podem me ajudar?
Mais detalhes sobre o problema: URL: http://localhost:4200/curso/10
Arquivo de configuração das rotas, app-routing.module.ts
:
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './components/home/home.component';
import { CoursesComponent } from './components/courses/courses.component';
import { CourseDetailsComponent } from './components/course-details/course-details.component';
const routes: Routes = [
{path: '', component: HomeComponent},
{path: 'cursos', component: CoursesComponent},
{path: 'curso/:id', component: CourseDetailsComponent},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
Arquivo app.components.ts, no qual estou tentando exibir via console log o id (parâmetro) capturado:
import { Component, Input, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Observable, map } from 'rxjs';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent implements OnInit {
constructor(private route: ActivatedRoute) {}
ngOnInit() {
console.log(this.route.snapshot.params); // Aqui o resultado é sempre um objeto vazio
}
}
Lembrando que o arquivo de rotas está importado no app.module
, consigo trafegar normalmente em qualquer uma das rotas da aplicação, o problema está exclusivamente em capturar e exibir o valor do parâmetro.