我在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
在两个示例中,您都会看到导航栏有效,但是单击链接或导航栏外部不会将其关闭。仅再次单击汉堡图标将其关闭。
答案 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导航栏的最佳实践(汉堡菜单)