在移动设备中,单击引导导航栏项不会隐藏菜单。
我的菜单按钮,显示手机:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
搜索此问题返回的结果未发布到角度2,我不知道如何实现它们。
当用户点击链接时,如何隐藏导航栏?
<li><a routerLink="/page">Click this should hide nav</a></li>
答案 0 :(得分:4)
您可以添加一个为您执行此操作的自定义指令
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");
}
}
不要忘记将它添加到声明数组中的app.module
import { CloseMenuDirective } from './directives/close-menu.directive';
@NgModule({
declarations: [
...declarations,
CloseMenuDirective
]
})
export class AppModule { }
然后在您的HTML中创建对菜单的引用,并将其传递给您的链接元素。
<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>
答案 1 :(得分:2)
这是导航栏的限制(https://github.com/valor-software/ngx-bootstrap/issues/540)。所以你需要操纵DOM元素。
import {MatButtonModule} from '@angular/material/button';
import {MatIconModule} from '@angular/material/icon';
...
@NgModule({
imports: [
...
MatButtonModule,
MatIconModule,
],
...
在.ts文件中,您的最小代码应为:
<div class="navbar-header page-scroll">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" routerLink="/">
<img src="assets/images/logo.png">
</a>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav navbar-right" >
<li class="hidden">
<a></a>
</li>
<li><a routerLink="/" (click)="onMenuClick()">Home</a></li>
<li><a routerLink="/about" (click)="onMenuClick()">About</a></li>
</ul>
</div>
答案 2 :(得分:2)
仅在Angular 2/4模板中执行此操作非常简单明了:
MaskedInputAssets
答案 3 :(得分:1)
此代码模拟单击burguer按钮以通过单击菜单中的链接来关闭导航栏,从而保持淡出效果。带有用于角度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>
答案 4 :(得分:0)
在最新版本的引导程序(4.0)中,您可以使用data-target =“。show”实现所需的功能。 “显示”是连接到可折叠元素以使其可见的类。 示例:
<button class="btn btn-primary" data-toggle="collapse" data-target=".show">Link_1</button>