web-dev-qa-db-ja.com

Angular ActivatedRoute dataは空のオブジェクトを返します

いくつかのデータで登録されたルートがあります:

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

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

しかし、何らかの理由でdataは空のオブジェクトです。

この問題を解決するには?

36
Francesco Borzi

話されているバージョンはわかりませんが、Angular 6の時点で、これはうまくいきました:

(もちろん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