I don't know whether it's still gonna work with Angular 2 but I am using...
My implementation result as below.
...inside my html template [header.component.html]
<nav id="mainNavbar" class="navbar navbar-expand-sm navbar-light bg-light">
<div class="container-fluid">
<a routerLink="/" class="navbar-brand">APP_NAME</a>
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
(click)="collapsed = !this.collapsed"
>
<span class="navbar-toggler-icon"></span>
</button>
<div
id="navbarSupportedContent"
[ngClass]="{ collapse: collapsed, 'navbar-collapse': true }"
>
<!-- right nav menus -->
<ul class="navbar-nav ml-auto">
<li routerLinkActive="active" class="nav-item">
<a routerLink="/LINK_1" class="nav-link"> lINK_1 </a>
</li>
<li routerLinkActive="active" class="nav-item">
<a routerLink="/LINK_2" class="nav-link"> LINK_2 </a>
</li>
</ul>
</div>
</div>
</nav>
...inside my ts component [header.component.ts]
import { Component, OnInit} from "@angular/core";
@Component({
selector: "app-header",
templateUrl: "./header.component.html",
styleUrls: ["./header.component.css"],
})
export class HeaderComponent implements OnInit {
collapsed = true;
constructor() {}
ngOnInit() {}
}
...inside my css [header.component.css]
nav {
position: sticky;
top: -2px;
z-index: 1;
-webkit-backface-visibility: hidden;
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);
}
.navbar {
margin-bottom: 2px !important;
}
I hope this helps. Feedbacks are welcome and appreciated. :)