【问题标题】:Display route title inside root component在根组件内显示路由标题
【发布时间】:2017-02-19 18:42:48
【问题描述】:

我有一个根组件,并希望在其中的特殊部分中显示路由标题。
我可以检测每个组件中哪个路由处于活动状态。
但是,我不知道如何在根中执行此操作零件。

这段代码在 ChildComponent1 中显示标题很好:

route:ActivatedRoute
ngOnInit() {

        this.route.data.subscribe(
            data => console.log(data)
        )

    }

如何检测当前路由的标题并将其显示在根组件中?

export const routes: Routes = [

  {path: '', component: Component1, canActivate: [NonAuthGuard]},

  {
    path: 'root', component: rootcomponent, canActivate: [AuthGuard], children: [
    {
      path: 'Child1',
      component: ChildComponent1,
      data: {
        title: 'Child1'
      },
      canActivate: [AuthGuard],
      canDeactivate: [CanDeactivateGuard]
    },
     {
      path: 'Child2',
      component: ChildComponent2,
      data: {
        title: 'Child2'
      },
      canActivate: [AuthGuard],
      canDeactivate: [CanDeactivateGuard]
    },
]}

【问题讨论】:

标签: angular angular2-routing


【解决方案1】:

你可以在你的根组件中注入Router,然后订阅它的事件。 示例:

constructor(private router : Router) {
    this.router.events.subscribe((event) => {
        if(event instanceof NavigationStart) {
            console.log(event);
            console.log(event.url);
        }
    });
}

您应该检查您的事件是NavigationStart 还是NavigationEnd 的实例,因为您的事件会触发几次次。

【讨论】:

  • 我应该如何访问路线的数据标题?事件对象仅包含 id 和 url。 {id: 1, url: "/url/url1", urlAfterRedirects: "/url/url1"}
  • 路由的数据标题是什么意思?
  • 我提供了我的路由数组(路由常量),它描述了如何在应用程序内部导航。每条路线都有带有标题属性的数据字段。
猜你喜欢
  • 2016-11-28
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 2019-05-24
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多