web-dev-qa-db-fra.com

Angular ActivatedRoute data renvoie un objet vide

J'ai un itinéraire enregistré avec quelques données:

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

et j'essaie d'accéder aux données de la route en utilisant ActivatedRoute:

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({...})
export class MyComponent implements OnInit {
  private routeData;

  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    this.routeData = this.route.data.subscribe((data) => {
      console.log(data); // this is returning an empty object {}
    });
  }
}

mais pour certaines raisons, data est un objet vide.

Comment résoudre ce problème?

36
Francesco Borzi

Je ne connais pas la version parlée, mais à partir de Angular 6, cela a fonctionné pour moi:

(Bien sûr, merci à 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;
        }
      }
    });
  }
3
Blazzze IL