Bootstrap 4下拉菜单在Angular 6中不起作用

时间:2018-10-04 03:34:20

标签: angular twitter-bootstrap twitter-bootstrap-3 bootstrap-4 angular6

我写了一条指令来实现按钮的下拉功能。它适用于Bootstrap 3,但不适用于Bootstrap 4。

这是HTML代码:

<div class="row">
  <div class="col-xs-12">
    <div class="btn-group" appDropdown>
      <button class="btn btn-primary dropdown-toggle"
      >Dropdown Menu<span class="caret"></span>
      </button>
      <ul class="dropdown-menu">
        <li><a>items1</a></li>
        <li><a>items2</a></li>
      </ul>
    </div>
  </div>
</div>

这是指令文件中的代码:

import {Directive, HostBinding, HostListener} from '@angular/core';

@Directive ({
  selector: '[appDropdown]'
})
export class DropdownDirective {
  @HostBinding('class.open') isOpen = false;
  @HostListener('click') toggleOpen() {
    this.isOpen = !this.isOpen;
  }
}

1 个答案:

答案 0 :(得分:0)

如果您不介意使用ngx-bootstrap,则可以执行以下操作。

您需要具有的依赖项列表,

  

bootstrap,jquery,ngx-bootstrap和popper.js

样品

enter image description here

app.component.html

<div class="btn-group" dropdown>
<button id="button-basic" dropdownToggle type="button" class="btn btn-primary dropdown-toggle"
        aria-controls="dropdown-basic">
  Button dropdown <span class="caret"></span>
</button>
<ul id="dropdown-basic" *dropdownMenu class="dropdown-menu"
    role="menu" aria-labelledby="button-basic">
  <li role="menuitem"><a class="dropdown-item" href="#">Action</a></li>
  <li role="menuitem"><a class="dropdown-item" href="#">Another action</a></li>
  <li role="menuitem"><a class="dropdown-item" href="#">Something else here</a></li>
  <li class="divider dropdown-divider"></li>
  <li role="menuitem"><a class="dropdown-item" href="#">Separated link</a>
  </li>
</ul>

app.module.ts

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';

import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';

import { BsDropdownModule } from 'ngx-bootstrap/dropdown';

@NgModule({
  imports:      [ BrowserModule, FormsModule, BsDropdownModule.forRoot() ],
  declarations: [ AppComponent, HelloComponent ],
  bootstrap:    [ AppComponent ]
})
export class AppModule { }

package.json (仅提取依赖项)

"dependencies": {
    "@angular/common": "^6.1.9",
    "@angular/compiler": "^6.1.9",
    "@angular/core": "^6.1.9",
    "@angular/forms": "^6.1.9",
    "@angular/platform-browser": "^6.1.9",
    "@angular/platform-browser-dynamic": "^6.1.9",
    "@angular/router": "^6.1.9",
    "bootstrap": "^4.1.3",
    "core-js": "^2.5.7",
    "jquery": "1.9.1 - 3",
    "ngx-bootstrap": "^3.0.1",
    "popper.js": "^1.14.3",
    "rxjs": "^6.3.3",
    "zone.js": "^0.8.26"
}

angular.json (提取的样式和脚本)

"projects": {
    "demo": {      
      "architect": {
        "build": {          
          "options": {            
            "styles": [
              "node_modules/bootstrap/dist/css/bootstrap.min.css",              
              "src/styles.css"
            ],
            "scripts": [
              "node_modules/jquery/dist/jquery.js",
              "node_modules/bootstrap/dist/js/bootstrap.js"
            ]
          }
        }
    }
  }
}

链接到StackBlitz

https://stackblitz.com/edit/angular6-bootstrap4-dropdown

我希望这会有所帮助。谢谢。