带有Angular 8的NG-bootstrap 4:导航栏有效,但单击时不会自动关闭(内部或外部导航栏)

时间:2019-06-12 19:49:22

标签: angular navbar ng-bootstrap

我在Angular 8中使用ng-bootstrap,并且导航栏有问题。单击汉堡包图标时,导航栏在响应和打开/关闭方面表现正确,但是问题是,单击链接之一或用户单击导航栏的“外部”时,导航栏不会“自动关闭”。仅当用户再次单击汉堡包时,它才会关闭。有没有办法使用ng-bootstrap来使导航栏在点击时自动关闭?

在我的研究中,我找到了许多有关如何使用Angular 4+和ng-bootstrap设置导航栏的示例,并且我注意到即使是“正确”的示例也存在相同的问题。甚至可以在点击时自动关闭导航栏吗?以下是一些示例:

这是我使用ng-bootstrap为导航栏找到的典型代码:

<nav class="navbar navbar-expand-md navbar-light bg-faded">
    <button class="navbar-toggler navbar-toggler-right" type="button" (click)="isNavbarCollapsed = !isNavbarCollapsed" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <a class="navbar-brand" href="#">Navbar</a>
    <div [ngbCollapse]="isNavbarCollapsed" class="navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled" href="#">Disabled</a>
        </li>
      </ul>
    </div>
  </nav>

这里有一些例子,如:
http://plnkr.co/edit/PlGTWzSGqawgQC2wfKp8?p=preview

https://stackblitz.com/edit/angular-ww6oap

在两个示例中,您都会看到导航栏有效,但是单击链接或导航栏外部不会将其关闭。仅再次单击汉堡图标将其关闭。

1 个答案:

答案 0 :(得分:0)

我知道了。我们可以将其添加到routerlinks中,以便将isNavbarCollapsed变量设置为true:

(click)="isNavbarCollapsed = true"

总看起来像这样:

<div class="collapse navbar-collapse" [ngbCollapse]="isNavbarCollapsed" id="navbarSupportedContent">
  <ul class="navbar-nav mr-auto">
    <li class="nav-item active">
      <a class="nav-link" [routerLink]="['/dash/', someParam]" (click)="isNavbarCollapsed = true">Dashboard <span
          class="sr-only">(current)</span></a>
    </li>
    <li class="nav-item">
      <a class="nav-link" routerLink="/archive" (click)="isNavbarCollapsed = true">Archive</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" routerLink="/help" (click)="isNavbarCollapsed = true">Help</a>
    </li>
  </ul>
</div>

希望对别人有帮助。 ng-bootstrap文档中目前未包含此技术(2019-06-18),因此尚不清楚哪种方法是在处于响应状态时关闭ng-bootstrap导航栏的最佳实践(汉堡菜单)