Bootstrap dropdown with Angular 6
I have came across the same problem earlier and I found as below:
- html should be binded with the class
container
in bootstrap as mentioned in Bootstrap Layout - Dropdowns are built on a third party library
Popper.js
as mentioned in Bootstrap Dropdown
As far as I know from your problem that you haven't refer to the required javascript
i.e. util.js, bootstrap.js, popper.js
or minified version.
Here, I have done nothing much, just refer the required javascript files in the index file
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
And I created a nav component and design as required like this:
<div class="container">
<!-- Content here -->
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</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>
</div
The working demo can be found here. Hope this helps you.
I have faced the same issue of bootstrap, but I got the solution. If you are using Angular 6, then no need to add popper.js for bootstrap. You need to add bootstrap 4 and then add rxjs-compat.
npm install rxjs-compat
And add ngx-bootstrap to perform dropdown action. Install the ngx-bootstrap,
npm install ngx-bootstrap --save
now we need to add the dropdown module from ngx-bootstrap in your application using following code
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
import { TooltipModule } from 'ngx-bootstrap/tooltip';
import { ModalModule } from 'ngx-bootstrap/modal';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
CommonModule,
BsDropdownModule.forRoot(),
TooltipModule.forRoot(),
ModalModule.forRoot()
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
then I did some changes in your code and it's working fine for me.
<nav class="navbar navbar-default">
<ul class="nav navbar-nav">
<li class="dropdown" dropdown >
<a dropdownToggle role="button"> <!-- {2} -->
Page1<span class="caret"></span></a>
<div *dropdownMenu class="dropdown-menu">
<a class="dropdown-item" href="#">Page1.1</a>
</div>
</li>
<li><a class="nav-link" href="#">Page2</a></li>
</ul>
</nav>
The answer of @Rushikesh Salunke is great but at the time i saw it i was already using @ng-bootstrap library, not ngx, and this is what i found from the docs.
First, import the NgbDropdown Module into the component where you want to use it.
import { NgbDropdown} from '@ng-bootstrap/ng-bootstrap';
Then modify your .html as follows:
<div ngbDropdown class="d-inline-block">
<button class="btn btn-outline-primary" id="dropdownBasic1" ngbDropdownToggle>Toggle dropdown</button>
<div ngbDropdownMenu 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>
You can see other use cases here.