У меня есть этот (основной родительский) компонент -
@RouteConfig([
{ path: '/', name: 'ProjectList', component: ProjectListComponent, useAsDefault: true },
{ path: '/new', name: 'ProjectNew', component: ProjectFormComponent },
{ path: '/:id', name: 'ProjectDetail', component: ProjectDetailComponent },
{ path: '/:id/issues/...', name: 'Issue', component: IssueMountComponent },
])
class ProjectMountComponent {
}
И затем у меня есть второй компонент монтирования (дочерний элемент основного родителя, родительский элемент следующего компонента)
@Component({
template: `
<div><router-outlet></router-outlet></div>
`,
directives: [RouterLink, RouterOutlet]
})
@RouteConfig([
{ path: "/", name: "IssueList", component: IssueListComponent, useAsDefault: true },
])
class IssueMountComponent {
constructor(private _routeParams: RouteParams) {
}
}
Здесь я могу без проблем получить доступ к маршрутуParams (: id). Теперь вот компонент, где мне нужно значение :id
из uri.
@Component({
template: `
<h3>Issue List</h3>
<ul>
<issue-component *ngFor="#issue of issues" [issue]="issue"></issue-component>
</ul>
`,
directives: [IssueComponent],
providers: [IssueService]
})
class IssueListComponent implements OnInit {
issues: Issue[];
constructor(private _issueService: IssueService,
private _routeParams: RouteParams) {}
getIssues() {
let id = this._routeParams.get('id');
console.log(this._routeParams);
this._issueService.getIssues(id).then(issues => this.issues = issues);
}
ngOnInit() {
this.getIssues();
}
}
В этом компоненте я не могу получить доступ к значению параметра :id
route. Он всегда равен нулю. Что я делаю неправильно?
Здесь иерархия компонентов -
ProjectMountComponent → IssueMountComponent → IssueListComponent