Build a responsive Bootstrap 4 Navbar in Angular 5 without jQuery
In this blog, I am demonstrating that how we can create collapsible navbar using Bootstrap and in angular 5 projects without using jquery and popper.js which are also not recommended by angular. To demonstrate it I have created header component where we will create a collapsible navbar of Bootstrap 4 and we will implement collapsible effect without using jQuery.js and popper.js.
Step 1: installation of Bootstrap 4 and passing the reference of bootstrap into styles.css
npm install --save bootstrap // Pass reference of bootstrap 4 into styles.css @import "../node_modules/bootstrap/dist/css/bootstrap.css"
Step 2: Create new angular header component
ng g c header --is --it
Step 3: Update index.html
<div class="container-fluid"></div> <app-root></app-root> </div>
Step 4: Add the following code into header.component.ts
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-header', template: ` <nav class="navbar navbar-expand-lg navbar-light bg-light"> <button class="navbar-toggler" type="button" (click)="toggleNavbar()" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarTogglerDemo01" [ngClass]="{ 'show': navbarOpen }"> <a class="navbar-brand" href="#">Hidden brand</a> <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> <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="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> </div> </nav> `, styles: [] }) export class HeaderComponent implements OnInit { constructor() { } ngOnInit() { } navbarOpen = false; toggleNavbar() { this.navbarOpen = !this.navbarOpen; } }
in the above code, I am using show attribute and NGclass directive of angular to manipulate Dom element of collapsable navbar here I am changing the show attribute using custom property navbarOpen and event binding using (click) button event.
Step 5: Run and see the results
ng serve --open
Output