在移动设备中,单击引导程序导航栏项不会隐藏菜单.
我的菜单按钮,显示手机:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
Run Code Online (Sandbox Code Playgroud)
搜索此问题返回结果未发布到角度2,我不知道如何实现它们.
当用户点击链接时,如何隐藏导航栏?
<li><a routerLink="/page">Click this should hide nav</a></li>
Run Code Online (Sandbox Code Playgroud)
仅在 Angular 2/4 模板中执行此操作的非常好且简单的方法:
<nav class="navbar navbar-default" aria-expanded="false">
<div class="container-wrapper">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" (click)="isCollapsed = !isCollapsed">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse no-transition" [attr.aria-expanded]="!isCollapsed" [ngClass]="{collapse: isCollapsed}">
<ul class="nav navbar-nav" (click)="isCollapsed = !isCollapsed">
<li [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact: true}"><a routerLink="/">Home</a></li>
<li [routerLinkActive]="['active']"><a routerLink="/about">About</a></li>
<li [routerLinkActive]="['active']"><a routerLink="/portfolio">Portfolio</a></li>
<li [routerLinkActive]="['active']"><a routerLink="/contacts">Contacts</a></li>
</ul>
</div>
</div>
</nav>
Run Code Online (Sandbox Code Playgroud)
您可以添加一个为您执行的自定义指令
import { Directive, ElementRef, Input, HostListener } from "@angular/core";
@Directive({
selector: "[menuClose]"
})
export class CloseMenuDirective {
@Input()
public menu: any;
constructor(private element: ElementRef) { }
@HostListener("click")
private onClick() {
this.menu.classList.remove("show");
}
}
Run Code Online (Sandbox Code Playgroud)
不要忘记将其添加到声明数组中的app.module中
import { CloseMenuDirective } from './directives/close-menu.directive';
@NgModule({
declarations: [
...declarations,
CloseMenuDirective
]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
然后在HTML中创建对菜单的引用,并将其传递给link元素。
<div class="page-layout">
<!-- Mark the menu with #menu, thus creating a reference to it -->
<aside class="collapse navbar-toggleable page-menu" id="navbar-header" #menu>
<ul class="nav">
<li class="nav-item">
<a class="nav-link"
[routerLink]="['./somewhere']"
routerLinkActive="active"
menuClose <!-- Our custom directive above -->
[menu]="menu"> <!-- Bind to menu -->
<span>My Link</span>
</a>
</li>
</ul>
</aside>
</div>
Run Code Online (Sandbox Code Playgroud)
此代码模拟单击 burguer 按钮以通过单击菜单中的链接关闭导航栏,保持淡出效果。使用 angular 7 的打字稿解决方案。避免 routerLink 问题。
ToggleNavBar () {
let element: HTMLElement = document.getElementsByClassName( 'navbar-toggler' )[ 0 ] as HTMLElement;
if ( element.getAttribute( 'aria-expanded' ) == 'true' ) {
element.click();
}
}
<li class="nav-item" [routerLinkActive]="['active']">
<a class="nav-link" [routerLink]="['link1']" title="link1" (click)="ToggleNavBar()">link1</a>
</li>
Run Code Online (Sandbox Code Playgroud)