Bootstrap导航栏不正确工作:AngularCLI

14

我将Bootstrap集成到我的AngularCLI项目中,但当我尝试包含导航栏时,其中的元素都无法正常工作。我正在使用网站上的标准Bootstrap导航栏示例,但它看起来很奇怪:

enter image description here

我的项目有什么问题,导致导航栏加载不正确?

navbar.component.html

enter image description here

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

  <div class="collapse navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <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="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

.angular-cli.json

"styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "styles.css"
      ],

4个回答

13
下面的代码展示了如何使用ng-bootstrap和Bootstrap 4在Angular中实现导航栏。您可以在this plunker中查看它的工作原理。
  • ng-bootstrap库是为Angular开发的,不需要jQuery。
  • 使用Bootstrap 4时,应该replacenavbar-toggleable-mdnavbar-expand-md
  • ngbCollapse指令用于显示/隐藏下拉菜单。
<nav class="navbar navbar-expand-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" (click)="isNavbarCollapsed = !isNavbarCollapsed" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">Navbar</a>
  <div [ngbCollapse]="isNavbarCollapsed" class="navbar-collapse" id="navbarSupportedContent">
    <ul class="navbar-nav mr-auto">
      <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="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

我更新了我的答案,展示了如何在Angular 5中使用Bootstrap 4的导航栏。 - ConnorsFan

11

navbar.component.html:

<nav class="navbar navbar-default">
   <div class="container-fluid">
      <div class="navbar-header">
         <button type="button" class="navbar-toggle" (click)="toggleNavbarCollapsing()">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
         </button>
         <a routerLink="/" class="navbar-brand">Navbar</a>
      </div>
      <div class="navbar-collapse" [class.collapse]="navbarCollapsed">
      ...

navbar.component.ts:

navbarCollapsed = true;

toggleNavbarCollapsing() {
    this.navbarCollapsed = !this.navbarCollapsed;
}

在 Angular 12 中对我有用,谢谢 @Aleksander - Prakash Jadhav

10

Bootstrap 4存在一些已知问题,特别是在导航栏的实现中。

因此,您需要安装Bootstrap bootstrap@3.3.7

如果您正在使用npm,则推荐使用以下库:

 npm install bootstrap@3.3.7 --save

npm install bootstrap@3.3.7 tether jquery --save
在 .angular-cli.json 文件中添加依赖项。
"styles":[
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.css"
],

"scripts":[
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
],

使用以下 HTML

 <nav class="navbarnavbar-inverse">
    <div class="container">
    <div class="navbar-header">
    <button type="button" class="navbar-togglecollapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
    <span class="sr-only">Togglenavigation</span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" href="#">Angular5Website</a>
    </div>
    <div id="navbar" class="collapsenavbar-collapse">
    <ul class="navnavbar-nav">
    <li class="active"> <a href="#">Home</a></li>
    <li><a href="#about">About</a></li>
    <li><a href="#contact">Contact</a></li>
    </ul>
    </div><!--/.nav-collapse-->
    </div>
    </nav>

它仍然存在问题,我将发布新外观的图片。 - FrankTheTank
请尝试使用Bootstrap 3.3.7示例导航栏组件。我已经附上了示例HTML以供参考。 - Ragavan Rajan
那个有效了!为什么所有的Bootstrap文档都不起作用? - FrankTheTank
太好了,它帮了我大忙!我一直在琢磨如何实现这个功能。不知道为什么文档没有更新。但是经过三个小时的思考,我终于得到了上面的解决方案。 - Ragavan Rajan
只喜欢导航栏中的一个元素。 - FrankTheTank
只是为了让折叠功能正常工作而包含jQuery...这听起来很有趣,直到它变成我的项目。 - Daniel Kucal

0

只需在index.html头部添加链接到css和js的代码

Bootstrap 5.2 Angular 13

链接 href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous"

脚本 src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2" crossorigin="anonymous" /script


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接