我写了一条指令来实现按钮的下拉功能。它适用于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;
}
}
答案 0 :(得分:0)
如果您不介意使用ngx-bootstrap,则可以执行以下操作。
您需要具有的依赖项列表,
bootstrap,jquery,ngx-bootstrap和popper.js
样品
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
我希望这会有所帮助。谢谢。