导航栏无法使用ng-bootstrap&在浏览器中呈现角度4 [英] navbar not rendering in browser using ng-bootstrap & angular 4

查看:43
本文介绍了导航栏无法使用ng-bootstrap&在浏览器中呈现角度4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用ng-bootstrap(用于Angular的Bootstrap 4)构建我的第一个Angular 4应用-不使用常规的Boostrap

I am building my first Angular 4 app, using ng-bootstrap (Bootstrap 4 for Angular) - not using regular Boostrap

ng-bootstrap网站( https://ng-bootstrap.github. io/#/components/accordion/api )没有列出导航栏的组件(就像在Bootstrap 3或常规Bootstrap 4中一样).这是否意味着我必须从下拉菜单/按钮中构建菜单?还是我必须将常规Bootstrap 4与ng-bootstrap混合使用?

The ng-bootstrap website (https://ng-bootstrap.github.io/#/components/accordion/api) does not list a component for a navbar (as it did in Bootstrap 3 or regular bootstrap 4). Does that mean I have to build a menu out of dropdowns/buttons? Or I have to mix regular Bootstrap 4 with ng-bootstrap?

我尝试在html中创建此菜单,但不会在浏览器中呈现(只是品牌"MyWebSiteName"和屏幕上的灰色小框,没有导航)

I tried creating this menu in the html but it won't render in the browser (just a brand "MyWebSiteName" and little grey box on my screen, no nav)

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">MyWebSiteName</a>
    </div>
     <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li class="dropdown">
          <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1 <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Page 1-1</a></li>
            <li><a href="#">Page 1-2</a></li>
            <li><a href="#">Page 1-3</a></li>
          </ul>
        </li>
        <li><a href="#">Page 2</a></li>
        <li><a href="#">Page 3</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
      </ul>
    </div>
  </div>
</nav>

此HTML出现问题了吗?还是有人提供了与ng-bootstrap一起使用的Navbar的示例?

I something wrong with this HTML ? Or does someone have an example of a Navbar that works with ng-bootstrap?

推荐答案

由于没有导航组件,因此您需要结合使用ng-bootstrap折叠功能的

As there is no navigation component you'd need to use a combination of the collapse functionality ng-bootstrap's ngbCollapse component as well as the dropdown functionality from the NgbDropdown component.

您需要将ngbCollapse的实例绑定到div.collapse.navbar-collapse,并在组件类上绑定一个布尔属性. ng-bootstrap对于data-*没有任何用处,因此您可以删除诸如data-toggle="collapse"之类的属性.

You'll need to bind an instance of ngbCollapse to the div.collapse.navbar-collapse and a boolean property on your component class. ng-bootstrap doesn't have any use for data-* so you can remove attributes such as data-toggle="collapse".

您可以通过组件类上的属性来控制折叠菜单的打开/关闭状态,该属性可以通过单击事件之类的方法在true/false之间切换.在此示例中,通过button.navbag-toggler上的(click)事件处理程序进行切换,从而在组件toggleMenu()上执行方法,该方法只是通过!运算符将布尔属性isCollapsed的值求反.

You control the open/close state of the collapse menu via a property on your component class that gets toggled true/false through something like a click event. In this example is toggle via a (click) event handler on the button.navbag-toggler executing a method on the component toggleMenu() which simply inverts the value of boolean property isCollapsed via the ! operator.

对于菜单项下拉菜单,您可以使用 NgbDropdown 组件.您将分别将ngbDropdownngbDropdownToggle属性应用于容器元素和切换元素.

For the menu item dropdown menu, you'd use the NgbDropdown component. You'd apply attributes ngbDropdown and ngbDropdownToggle to the container element and toggle element respectively.

<div class="nav-item dropdown" ngbDropdown>
  <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" ngbDropdownToggle>
    Dropdown
  </a>
  <div class="dropdown-menu" aria-labelledby="dropdownBasic1">
    <button class="dropdown-item">Action - 1</button>
    <button class="dropdown-item">Another Action</button>
    <button class="dropdown-item">Something else is here</button>
  </div>
</div>

关于Bootstrap 4的样式 navbar ,则需要使用以下类:

In terms of styling for Bootstrap 4 navbar, you'll need to use the following classes:

导航栏需要带 .navbar-toggleable-* 的环绕式 .navbar 响应式折叠和配色方案类.

Navbars require a wrapping .navbar with .navbar-toggleable-* for responsive collapsing and color scheme classes.

在Bootstrap 4中,诸如button.navbar-toggle之类的其他元素现在也已成为button.navbar-toggler并带有"r".您将navbar-inversebg-inverse类用于标准逆导航栏.

Also elements such as button.navbar-toggle are now button.navbar-toggler with an "r" in Bootstrap 4. You use classes navbar-inverse and bg-inverse for the standard inverse navbar.

HTML:

<nav class="navbar navbar-toggleable-md navbar-inverse bg-inverse">
  <button class="navbar-toggler navbar-toggler-right" type="button" aria-controls="appNavigation" [attr.aria-expanded]="!isCollapsed" aria-label="Toggle navigation" (click)="toggleMenu()">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="navbar-brand" href="#">My App</a>
  <div class="collapse navbar-collapse" id="appNavigation" [ngbCollapse]="isCollapsed">
    <div class="navbar-nav mr-auto">
      <a class="nav-item nav-link" routerLink="" routerLinkActive="active">Home</a>
      <a class="nav-item nav-link" routerLink="/about" routerLinkActive="active">About</a>
      <div class="nav-item dropdown" ngbDropdown>
        <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" ngbDropdownToggle>
            Dropdown
        </a>
        <div class="dropdown-menu" aria-labelledby="dropdownBasic1">
          <button class="dropdown-item">Action - 1</button>
          <button class="dropdown-item">Another Action</button>
          <button class="dropdown-item">Something else is here</button>
        </div>
      </div>
    </div>
  </div>
</nav>

TS:

export class NavigationComponent {
  isCollapsed = true;

  constructor() {}

  toggleMenu() {
    this.isCollapsed = !this.isCollapsed;
  }
}

这是 plunker ,展示了功能和样式.

Here is a plunker demonstrating the functionality and styling in action.

这篇关于导航栏无法使用ng-bootstrap&amp;在浏览器中呈现角度4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆