javascript - 基于子组件的父组件的 Angular 显示/隐藏

标签 javascript angular

我有一个具有以下模板的父组件:

<app-sidebar></app-sidebar>
<router-outlet></router-outlet>
<app-footer></app-footer>

如何根据通过路由器导出的组件路由来显示或隐藏 app-sidebarapp-footer 组件?我有一个 bool showSidebar 我想使用,它的值在每个子组件上设置为 true 或 false。

<app-sidebar *ngIf=showSidebar></app-sidebar>

最佳答案

在应用程序路由中添加数据属性。

  { path: 'no-sidebar', component: NoSidebarComponent, canActivate: [AuthGuard], data: { showSidebar: false } },

并像这样订阅父组件中的路由器事件

this.router.events.subscribe(event => {
    if (event instanceof RoutesRecognized) {
      const routeData = event.state.root.firstChild.data;

      if (routeData) {
        this.showSidebar = routeData.showSidebar === false ? false : true
      }
    }
  }

关于javascript - 基于子组件的父组件的 Angular 显示/隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74212173/

相关文章:

javascript - 取消 jQuery 选择器调用?

javascript - 来自 C++ 对象的 QML 调用方法

javascript - innerHTML 不改变 div 输出

angular - 在 Angular2 中拥有顶级组件是最佳实践吗?

javascript - 如何根据用户输入的日期订购餐 table

javascript - 使用 jQuery、PHP、AJAX 和 MySQL 存储和检索数据

javascript - 如何在 rxjs 中做链式序列

javascript - 如何从 Angular 服务对 propublica.org 进行 Web API 调用

json - 如何使用 papa-parse-angular2

angular - 类型 'automaticDataCollectionEnabled' 中缺少属性 'FirebaseApp'