【发布时间】:2017-05-27 14:15:33
【问题描述】:
我们有组件(ka-cockpit-panel),它没有映射到任何路线,并手动插入到其他一些组件中,如下所示:
..
...
<section class="ka-cockpit-panel cockpit-1 pull-left">
<ka-cockpit-panel></ka-cockpit-panel>
</section>
...
..
在这个组件中,我想访问当前活动的路线数据。
例如:如果我们有一些其他组件(比如 ka-integration-component )并且它有一些与之关联的路由数据(如下所示),每当我们导航到这个组件时(通过url 或通过单击某些 routerlink ) ,我们想要访问 ka-cockpit-component 中的集成组件路由数据。
..
...
{
path: "",
component: IntegrationComponent,
data : {
cockpit1 : false,
cockpit2 : true,
kpi : true
},
}
..
...
基本上,我们希望为应用中的某些组件配置我们的 ka-cockpit-component,这些组件映射到某个路由,以便我们可以隐藏/显示或更改其外观。
座舱组件代码:
import { Component, OnInit } from '@angular/core';
import { Router,Event,NavigationEnd,ActivatedRoute } from '@angular/router';
@Component({
selector: 'ka-cockpit-panel',
templateUrl: './cockpit-panel.component.html',
styleUrls : ['./cockpit-panel.component.scss']
})
export class CockpitPanelComponent implements OnInit {
constructor(private router:Router,private activatedRoute : ActivatedRoute) {
this.router.events.subscribe( (event:Event) => {
if(event instanceof NavigationEnd) {
console.log("Cockpit Panel Component : Route successfully changed - ",event,this.router,this.activatedRoute);
// THIS IS WHAT WE WANT - get Integration component route data here whenever i navigate to integration component!!!
}
});
}
ngOnInit() { }
}
【问题讨论】:
-
你试过this.activatedRoute.parent.params.map(params=>params).subscribe(params => {console.log(params)})吗?
标签: javascript angular typescript angular2-routing