Angular2:获取父路由器数据

Angular2 : get parent router data

我正在路由 /blabla/:id/blabla/:secondid 下创建一个组件

我的 url“/blabla/:id/...”的第一部分由我的第一个路由组件管理。

然后,第二个路由器管理 url 的第二部分。

在我的组件中,我可以轻松访问 RouteData 中的“:secondid”。

但我想知道如何从那里访问我的“:id”。

有什么想法吗?

传递第一个 id 和数据绑定。

您必须使用 Injector 来获取 parents 数据。

这是使用该功能从 here 中提取的示例代码。

    this.params = injector.parent.parent.get(RouteParams);
    this.userLogin = this.params.get('userLogin');

看看构造函数以及如何使用 injector 来获得很棒的 parent 的 userLogin

import {Component, Injector} from 'angular2/core';
import {Http} from 'angular2/http';
import {ROUTER_DIRECTIVES, Router, RouteParams, RouteConfig} from 'angular2/router';

@Component({
  directives: [ROUTER_DIRECTIVES],
  template: `
    <div class="col-sm-3">
      <img class="img-circle" src="" />
      <p *ngIf="userData.name">
        <i class="glyphicon glyphicon-user"></i> 

      </p>
      <p *ngIf="userData.company">
        <i class="glyphicon glyphicon-briefcase"></i> 

      </p>
      <p *ngIf="userData.location">
        <i class="glyphicon glyphicon-globe"></i> 

      </p>
    </div>
    <div class="col-sm-9">

    </div>
  `,
  styles: [`
    img { width: 100px; margin-bottom: 10px; }
  `]
})

export class UserDetail {
  params: RouteParams;
  userLogin: string;
  userData: Object = {};

  constructor(public http: Http, params: RouteParams, injector: Injector, private _router: Router) {
    // We use injector to get a hold of the parent's params
    this.params = injector.parent.parent.get(RouteParams);
    this.userLogin = this.params.get('userLogin');
  }

  ngOnInit() {
    this.http.get(`http://api.github.com/users/${this.userLogin}`)
      .map(response => response.json())
      .subscribe(
        data => this.userData = data,
        err => console.log(err)
      );
  }

}