可折叠Navbar Angular 4 Bootstrap 4

时间:2017-07-24 15:21:04

标签: angular nav bootstrap-4

一直在努力尝试按照我想要的方式工作。我有一个Angular通用应用程序,它有一个导航栏(垂直在顶部),我希望它能够对移动设备做出响应。我的目标是Bootstrap 4 Alpha 6并唱ngx-bootstrap来连接它。但无论我做什么,我都无法让所有部件按预期工作。

这是我的模板文件(此处没有自定义样式)

<div class="pos-f-t fixed-top">
     <nav class="navbar navbar-inverse navbar-toggleable-md">
        <div class="collapse navbar-collapse">
           <a class="navbar-brand" routerLink="">Blog</a>
           <ul class="navbar-nav ml-auto mt-2 mt-md-0">
              <li class="nav-item hidden-lg-down">
                  <a routerLink="/blog" [routerLinkActive]="['router-link-active']" class="list-group-item">Blog</a>
              </li> &nbsp;
              <li class="nav-item">
                  <a routerLink="/about" [routerLinkActive]="['router-link-active']" class="list-group-item">About</a>
              </li> &nbsp;
              <li class="nav-item">
                  <a routerLink="/search" [routerLinkActive]="['router-link-active']" class="list-group-item">Search</a>
              </li> &nbsp;
          </ul>
       </div>
     </nav>
</div>

我在GitHub问题上尝试了一些SO帖子以及MISC演练,但我现在还不能。在小型取景器上,我希望有一个图标隐藏/显示菜单onclick(无论是将css类分配给div还是使用其他东西)。我遇到的问题是,由于我使用Universal,我没有jQuery访问权限,所以我认为开箱即用的Bootstrap Nav不起作用。任何可以提供帮助的人都是我的英雄。

5 个答案:

答案 0 :(得分:2)

我在Angular App link

中使用了它

Bootstrap Navbar

 <nav class="navbar navbar-toggleable-md navbar-light bg-faded  navbar-fixed-top">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
          aria-label="Toggle navigation" (click)="isActive = !isActive">
    <span class="navbar-toggler-icon"></span>
  </button>
   <a class="navbar-brand" href="#">Navbar</a>
  <div class="collapse navbar-collapse" id="navbarNavDropdown" [ngClass] = "{show : isActive}"> // ngClass used here
    <ul class="navbar-nav">
        <li class="nav-item dropdown [routerLinkActive]="['active']" appDropdown"> // directive used here
        <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>
  </div>
</nav>

appDropdown指令

import {Directive, HostListener, HostBinding} from '@angular/core';

  @Directive({
    selector: '[appDropdown]'
  })
  export class DropdownDirective {

    private isOpen:boolean = false;

    @HostBinding('class.open') get opened(){
      return this.isOpen;
    }
    constructor() { }

    @HostListener('click')open(){
      this.isOpen = true;
    }

    @HostListener('mouseleave')close(){
      this.isOpen = false;
    }
  }

你也可以导入第三方JS来完成这项工作但是如果我们使用JS框架为什么要使用另一个,但是如果你需要它,你可以在这里找到它有一个专门的问题link

答案 1 :(得分:0)

只需添加你的ts文件:

export class HeaderComponent implements OnInit {
    public isCollapsed = true;
    constructor() {
    }
    ngOnInit() {
    }
}

然后在您的component.html中添加(点击)=“isCollapsed =!isCollapsed”按钮

<div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar" (click)="isCollapsed = !isCollapsed"
        [attr.aria-expanded]="!isCollapsed">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>                        
    </button>
    <a class="navbar-brand" href="#"><img class="navbar-logo" src="../../assets/images/3.png"></a>
</div>

然后在你必须显示崩溃项目的div中添加 [ngbCollapse] =“isCollapsed”

<div class="collapse navbar-collapse" id="myNavbar" [ngbCollapse]="isCollapsed">

答案 2 :(得分:0)

#you can use click method in your html and use router navigate in your type script.

#In HTML File
     <a class="nav-link" (click)="onMenuClick('profile')">Profile </a>
#In Type Script file

 onMenuClick(path) {
    $('.navbar-toggler').click();
    this.router.navigate(['/' + path]);

  }

答案 3 :(得分:0)

将此站点用于兼容Angular的可折叠导航栏。非常简单。

Collapsable Navbar

答案 4 :(得分:-4)

您可以通过此

找到问题的答案

https://github.com/angular/flex-layout

它为Flex和媒体查询操作提供了广泛的布局API