折叠无法在ng-bootstrap和angular 4应用程序中使用navbar breadcrumb按钮

Adi*_*Sai 7 collapse bootstrap-4 ng-bootstrap twitter-bootstrap-4-beta

我正在为我的应用程序使用角度4和bootstrap 4 beta 2和ng-bootstrap,并使用ng-bootstrap.

我已经从bootstrap文档示例中添加了导航栏.

代码如下所示:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
    <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>
Run Code Online (Sandbox Code Playgroud)

我还在angular-cli.json中添加了bootstrap样式.该代码如下所示:

 "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],
Run Code Online (Sandbox Code Playgroud)

移动视图上的"面包屑"按钮在其单击时没有响应.当我试图检查时:我知道"崩溃"类没有被添加到点击按钮上. 在此输入图像描述

Adi*_*Sai 16

我现在有一个解决方案.只需使用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>
Run Code Online (Sandbox Code Playgroud)

组件ts文件:

export class AppComponent {
  isCollapsed = false;
}
Run Code Online (Sandbox Code Playgroud)

在angular-cli.json中添加bootstrap css文件:

"styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],
Run Code Online (Sandbox Code Playgroud)

在主模块中添加:

import {NgbModule} from '@ng-bootstrap/ng-bootstrap';

imports: [
  NgbModule.forRoot()
]
Run Code Online (Sandbox Code Playgroud)

这将像一个魅力.

使用ng-bootstrap的主要优点是你可以消除jquery和popper等其他js库的依赖关系,你也可以为bootstrap编写组件.


Roh*_*han 6

使用ng-bootstrap(或者在我的例子中为ngx-boostrap)绝对简化了事情,因为我不必担心jQuery和popper。如当前接受的答案所述。

但这并不能彻底解决我的问题,因为我错过了重要的细节。ngx-bootstrap启动并运行后,可以通过collapsenavbar-collapsediv 的属性绑定到组件文件中的变量开始:

<div [collapse]="isCollapsed" class="navbar-collapse collapse" id="navbar-main">
  ...
</div>
Run Code Online (Sandbox Code Playgroud)

仅凭这还不够,您实际上需要通过绑定到切换按钮的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>
Run Code Online (Sandbox Code Playgroud)

(click)="isCollapsed = !isCollapsed"对我来说是最基本的缺失。这会将按钮的onClick事件绑定到isCollapsed变量,在单击时进行切换,从而collapse适当地设置导航栏的属性。

这是我发现的jsfiddle,最终帮助我弄清楚了我的错误: jsFiddle外部链接