route parammap from data activatedroute angular angular-routing

parammap - Los datos de Angular ActivatedRoute devuelven un objeto vacío



import activatedroute from ''@ angular router ''; (3)

Edición: el problema es que estaba intentando acceder a ActivatedRoute desde un componente que está fuera de <router-outlet> . Así que parece que este es el comportamiento previsto.

Sin embargo, sigo pensando que mi respuesta a continuación puede ser útil para cualquier persona que esté tratando de lograr lo mismo.

Encontré una solución alternativa en GitHub (gracias manklu ) que usé para lograr lo que necesitaba:

import { Component, OnInit } from ''@angular/core''; import { Router, RoutesRecognized } from ''@angular/router''; @Component({...}) export class MyComponent implements OnInit { private routeData; constructor(private router: Router) { } ngOnInit() { this.router.events.subscribe((data) => { if (data instanceof RoutesRecognized) { this.routeData = data.state.root.firstChild.data; } }); } }

de esta manera this.routeData mantendrá los datos de ruta que necesitaba (en mi caso, el title la página).

Tengo una ruta registrada con algunos datos:

const routes: Routes = [ {path: ''my-route'', data: { title: ''MyTitle'' }, component: MyComponent}, ];

y estoy tratando de acceder a los datos de la ruta usando ActivatedRoute :

import { Component, OnInit } from ''@angular/core''; import { ActivatedRoute } from ''@angular/router''; @Component({...}) export class MyComponent implements OnInit { constructor(private route: ActivatedRoute) {} public ngOnInit() { this.routeData = this.route.data.subscribe((data) => { console.log(data); // this is returning an empty object {} }); } }

pero por alguna razón los data son un objeto vacío.

¿Cómo resolver este problema?


A continuación debe trabajar:

constructor(private route: ActivatedRoute) {} ngOnInit() { console.log(this.route.snapshot.data); }


No sé la versión hablada, pero a partir de Angular 6 , esto funcionó para mí:

(Por supuesto gracias a ShinDath)

routeData; ngOnInit() { //child route param doesnt go up to parent route params. this.router.events.subscribe((val) => { if (val instanceof ActivationEnd) { if(!$.isEmptyObject(val.snapshot.params)){ this.routeData = val.snapshot.params; } } }); }