一直在努力尝试按照我想要的方式工作。我有一个Angular通用应用程序,它有一个导航栏(垂直在顶部),我希望它能够对移动设备做出响应。我的目标是Bootstrap 4 Alpha 6并唱ngx-bootstrap来连接它。但无论我做什么,我都无法让所有部件按预期工作。
这是我的模板文件(此处没有自定义样式)
<div class="pos-f-t fixed-top">
<nav class="navbar navbar-inverse navbar-toggleable-md">
<div class="collapse navbar-collapse">
<a class="navbar-brand" routerLink="">Blog</a>
<ul class="navbar-nav ml-auto mt-2 mt-md-0">
<li class="nav-item hidden-lg-down">
<a routerLink="/blog" [routerLinkActive]="['router-link-active']" class="list-group-item">Blog</a>
</li>
<li class="nav-item">
<a routerLink="/about" [routerLinkActive]="['router-link-active']" class="list-group-item">About</a>
</li>
<li class="nav-item">
<a routerLink="/search" [routerLinkActive]="['router-link-active']" class="list-group-item">Search</a>
</li>
</ul>
</div>
</nav>
</div>
我在GitHub问题上尝试了一些SO帖子以及MISC演练,但我现在还不能。在小型取景器上,我希望有一个图标隐藏/显示菜单onclick(无论是将css类分配给div还是使用其他东西)。我遇到的问题是,由于我使用Universal,我没有jQuery访问权限,所以我认为开箱即用的Bootstrap Nav不起作用。任何可以提供帮助的人都是我的英雄。
答案 0 :(得分:2)
我在Angular App link
中使用了它Bootstrap Navbar
<nav class="navbar navbar-toggleable-md navbar-light bg-faded navbar-fixed-top">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false"
aria-label="Toggle navigation" (click)="isActive = !isActive">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Navbar</a>
<div class="collapse navbar-collapse" id="navbarNavDropdown" [ngClass] = "{show : isActive}"> // ngClass used here
<ul class="navbar-nav">
<li class="nav-item dropdown [routerLinkActive]="['active']" appDropdown"> // directive used here
<a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown link
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</div>
</nav>
appDropdown指令
import {Directive, HostListener, HostBinding} from '@angular/core';
@Directive({
selector: '[appDropdown]'
})
export class DropdownDirective {
private isOpen:boolean = false;
@HostBinding('class.open') get opened(){
return this.isOpen;
}
constructor() { }
@HostListener('click')open(){
this.isOpen = true;
}
@HostListener('mouseleave')close(){
this.isOpen = false;
}
}
你也可以导入第三方JS来完成这项工作但是如果我们使用JS框架为什么要使用另一个,但是如果你需要它,你可以在这里找到它有一个专门的问题link
答案 1 :(得分:0)
只需添加你的ts文件:
export class HeaderComponent implements OnInit {
public isCollapsed = true;
constructor() {
}
ngOnInit() {
}
}
然后在您的component.html中添加(点击)=“isCollapsed =!isCollapsed”按钮
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar" (click)="isCollapsed = !isCollapsed"
[attr.aria-expanded]="!isCollapsed">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><img class="navbar-logo" src="../../assets/images/3.png"></a>
</div>
然后在你必须显示崩溃项目的div中添加 [ngbCollapse] =“isCollapsed”
<div class="collapse navbar-collapse" id="myNavbar" [ngbCollapse]="isCollapsed">
答案 2 :(得分:0)
#you can use click method in your html and use router navigate in your type script.
#In HTML File
<a class="nav-link" (click)="onMenuClick('profile')">Profile </a>
#In Type Script file
onMenuClick(path) {
$('.navbar-toggler').click();
this.router.navigate(['/' + path]);
}
答案 3 :(得分:0)
将此站点用于兼容Angular的可折叠导航栏。非常简单。
答案 4 :(得分:-4)