代码之家  ›  专栏  ›  技术社区  ›  Judy007

在Angular5中,如何避免某些组件/页面具有navmenucomponent?

  •  0
  • Judy007  · 技术社区  · 6 年前

    例如,使用在Visual Studio 2017中为Angular应用程序生成的模板,当我在RouterModule中创建新组件和关联路径时,每当我导航到该路径时,视图将包含NavmenuComponent。 我知道一个隐藏导航的解决方案,但我根本没有要初始化的NavmenuComponent。我怎样才能做到这一点?

    同样,我知道我可以隐藏nav,但我不想在生命周期中初始化navmenucomponent,也不想初始化任何navmenucomponent组件本身。感谢您的帮助

    1 回复  |  直到 6 年前
        1
  •  1
  •   danday74    6 年前

    可以有多个布局组件。

    例如,基本布局组件如下所示:

    <nav></nav>
    <router-outlet></router-outlet>
    <footer></footer>
    

    调用这个navlayoutcomponent。创建另一个名为layoutcomponent的组件,而不使用这样的导航:

    <router-outlet></router-outlet>
    <footer></footer>
    

    然后在路由中定义要使用的布局组件:

    {
      path: 'help', component: NavLayoutComponent,
      children: [
        {path: 'help', component: HelpComponent}
      ]
    }
    

    在这里,所有的孩子都有一个导航栏。

    {
      path: 'login', component: LayoutComponent,
      children: [
        {path: '', component: LoginComponent}
      ]
    }
    

    这里,所有的孩子都没有导航栏。

    您的app.component.html只需要:

    <router-outlet></router-outlet>
    

    这将插入适当的布局组件。

    或者更简单,只需使用一个布局组件并使用*ngif

    <nav *ngIf="this.router.url IS IN MY LIST OF ALLOWED URLS"></nav>
    

    请注意,*ngif会阻止初始化(如果为false)。