angular - 在 Angular 中包含导航栏的最佳方式?

标签 angular

在我的 Angular 应用程序中显示导航栏的最佳方法是什么?

现在我已经在 app.component.html 顶部添加了我的 nav-bar 组件,并且通过订阅我正在设置的服务,如果某些项目在导航栏应该或不应该可见..

我的 app.component.html 看起来像这样:

<app-top-bar></app-top-bar> // navbar
<div class="container px-0 px-sm-3">
  <router-outlet></router-outlet>
</div>

但在这一点上,我怀疑是否最好在每个组件中包含 app-top-bar 并且如果项目应该或不应该在它..

最佳答案

我的标准做法是在路由配置中。

您可以将布局组件设置为页面组件的父级。

一个简单的布局组件模板可能如下所示:

<header>
  The header
</header>

<main>
  <!-- Your pages are rendered here -->
  <router-outlet></router-outlet>
</main>

<footer>
  The footer
</footer>

路由声明看起来很酷:

const routes = [
  {
    component: LayoutComponent,
    path: '',
    children: [
      { component: PageComponent, path: 'page' }
    ]
  },
  { component: OtherPageComponent, path: 'otherpage' }
];

在上面的示例中,PageComponent 将使用 LayoutComponent 显示,而 OtherPageComponent 将在没有它的情况下呈现。这样您就可以根据当前路线选择何时显示布局。

如果对于同一条路线,顶部栏可以显示或隐藏,对我来说这是一个状态,因此将其存储在服务的主题中是有意义的。

关于angular - 在 Angular 中包含导航栏的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64204787/

相关文章:

javascript - 将组件实例插入 DOM

javascript - 无法在子组件中加载 DOM 元素

路由前的 Angular 超时

通过具有多个 id 的帖子进行 Angular 循环

javascript - Angular Material MatChipList - 如何在动态 FormArray 上使用它?

angular - 无法使用WebStorm调试Angular

angular - 在 Angular2 中从 HTML 调用组件方法

Angular 2 模式弹出错误 "Expression has changed after it was checked"

javascript - DOM 中没有选择器标记的 Angular 2 组件

html - 背景图像覆盖整个屏幕,但有一个奇怪的边距