NG-bootstrap 4 with Angular 8:导航栏有效,但点击时不会自动关闭(导航栏内部或外部)
NG-bootstrap 4 with Angular 8: Navbar works, but doesn't auto-close on click (inside or outside navbar)
我将 ng-bootstrap 与 Angular 8 一起使用,但导航栏出现问题。单击汉堡包图标时,导航栏在响应和 opening/closing 方面表现正确,但问题是当单击其中一个 link 或用户时,它不会 "autoclose"单击导航栏的 "outside"。它只会在用户再次点击汉堡包时关闭。有没有办法使用 ng-bootstrap 让导航栏在点击时自动关闭?
在我的研究中,我发现了一些如何使用 Angular 4+ 和 ng-bootstrap 设置导航栏的示例,我注意到即使是 "correct" 例子有同样的问题。甚至可以在点击时自动关闭导航栏吗?以下是一些示例:
这是我使用 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>
以下是 plunker 和 stackblitz 示例:
http://plnkr.co/edit/PlGTWzSGqawgQC2wfKp8?p=preview
https://stackblitz.com/edit/angular-ww6oap
在这两个示例中,您会看到导航栏可以正常工作,但单击 link 或导航栏外部不会将其关闭。只有再次单击汉堡包图标才能将其关闭。
我明白了。我们可以将其添加到路由器链接,以便将 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>
希望对其他人有所帮助。此技术目前 (2019-06-18) 未包含在 ng-bootstrap 文档中,因此当处于响应状态时关闭 ng-bootstrap 导航栏的最佳做法并不是立即显而易见的(汉堡菜单)。
我将 ng-bootstrap 与 Angular 8 一起使用,但导航栏出现问题。单击汉堡包图标时,导航栏在响应和 opening/closing 方面表现正确,但问题是当单击其中一个 link 或用户时,它不会 "autoclose"单击导航栏的 "outside"。它只会在用户再次点击汉堡包时关闭。有没有办法使用 ng-bootstrap 让导航栏在点击时自动关闭?
在我的研究中,我发现了一些如何使用 Angular 4+ 和 ng-bootstrap 设置导航栏的示例,我注意到即使是 "correct" 例子有同样的问题。甚至可以在点击时自动关闭导航栏吗?以下是一些示例:
这是我使用 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>
以下是 plunker 和 stackblitz 示例:
http://plnkr.co/edit/PlGTWzSGqawgQC2wfKp8?p=preview
https://stackblitz.com/edit/angular-ww6oap
在这两个示例中,您会看到导航栏可以正常工作,但单击 link 或导航栏外部不会将其关闭。只有再次单击汉堡包图标才能将其关闭。
我明白了。我们可以将其添加到路由器链接,以便将 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>
希望对其他人有所帮助。此技术目前 (2019-06-18) 未包含在 ng-bootstrap 文档中,因此当处于响应状态时关闭 ng-bootstrap 导航栏的最佳做法并不是立即显而易见的(汉堡菜单)。