我正在为我的应用程序使用angular 4和bootstrap 4 beta 2和ng-bootstrap,并使用ng-bootstrap。
我在bootstrap文档示例中添加了导航栏。
代码如下所示:
div {
width: 100px;
height: 100px;
background: green;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
div:active {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1);
}
我还在angular-cli.json中添加了bootstrap样式。该代码如下所示:
<div>
</div>
答案 0 :(得分:11)
我现在有一个解决方案。只需使用ng-bootstrap即可解决您的问题。
Html文件:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler btn btn-outline-primary" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation" (click)="isCollapsed = !isCollapsed" [attr.aria-expanded]="!isCollapsed" aria-controls="navbarTogglerDemo02">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02" [ngbCollapse]="isCollapsed">
<ul class="navbar-nav mr-auto mt-2 mt-lg-0">
<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>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</nav>
组件ts文件:
export class AppComponent {
isCollapsed = false;
}
在angular-cli.json中添加bootstrap css文件:
"styles": [
"../node_modules/bootstrap/dist/css/bootstrap.min.css",
"styles.css"
],
在主模块中添加:
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
imports: [
NgbModule.forRoot()
]
这就像魅力一样。
使用ng-bootstrap的主要优点是你可以消除其他js库的依赖关系,比如jquery和popper,你也可以为bootstrap编写组件。
答案 1 :(得分:5)
使用ng-bootstrap(或者在我的情况下使用ngx-boostrap)肯定简化了一些事情,因为我不必担心jQuery和popper。正如目前接受的答案所提到的那样。
然而,这并没有彻底解决我的问题,因为我错过了重要的细节。在启动并运行ngx-bootstrap之后,您可以首先将collapse
div的navbar-collapse
属性绑定到组件文件中的变量:
<div [collapse]="isCollapsed" class="navbar-collapse collapse" id="navbar-main">
...
</div>
仅凭这一点是不够的,你实际上需要通过绑定到切换器按钮的click事件来自己修改这个变量(这是我错过的部分):
<button (click)="isCollapsed = !isCollapsed" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-main" aria-controls="navbar-main" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
(click)="isCollapsed = !isCollapsed"
是我的基本缺失部分。这会将按钮的onClick事件绑定到isCollapsed变量,单击时将其切换,从而适当地设置导航栏的collapse
属性。
这是我发现的jsfiddle,最终帮助我找出了我的错误: jsFiddle external link
答案 2 :(得分:0)
工作导航栏
ng-bootstrap
入门 组件 {{ 零件 }}
<span class="github-buttons d-none d-lg-inline">
<a class="github-button"
href="https://github.com/ng-bootstrap/ng-bootstrap"
target="_blank"
data-style="mega"
data-count-href="/ng-bootstrap/ng-bootstrap/stargazers"
data-count-api="/repos/ng-bootstrap/ng-bootstrap#stargazers_count"
data-count-aria-label="# stargazers on GitHub"
aria-label="Star ng-bootstrap/ng-bootstrap on GitHub">Star</a>
<a href="https://twitter.com/intent/tweet?button_hashtag=ngbootstrap"
class="twitter-hashtag-button"
data-size="large"
data-text="I'm checking out ng-bootstrap, THE Angular UI framework for Bootstrap CSS"
data-url="https://ng-bootstrap.github.io"
data-show-count="true">Tweet #ngbootstrap</a>
</span>