3

I try this but when i click to Dropdown link nemu, nothing happens.

<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item">
                <a class="nav-link" routerLink="dashboard">dashboard</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" routerLink="calendar">calendar</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" routerLink="manager">manager</a>
            </li>
            <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" id="navbardrop" data-toggle="dropdown">
                    Dropdown link
                </a>
                <div class="dropdown-menu">
                    <a class="dropdown-item" href="#">Link 1</a>
                    <a class="dropdown-item" href="#">Link 2</a>
                    <a class="dropdown-item" href="#">Link 3</a>
                </div>
            </li>
        </ul>
        <!--ul class="navbar-nav navbar-right">

        </ul-->
    </div>
</nav>

EDIT:

I use https://ng-bootstrap.github.io/#/components/datepicker/overview and navbar do not present.

1
  • With ng-bootstrap, you can manage the dropdown menu with the ngbCollapse directive, as shown in this answer. Commented Jan 14, 2019 at 16:56

4 Answers 4

6

I found in the ng-bootstrap documentation that navbar did not exist. So I added jQuery and it works.

npm install bootstrap --save
npm install jquery --save

and add this in angular.json (Angular 7):

"scripts": [
    "node_modules/jquery/dist/jquery.js",
    "node_modules/bootstrap/dist/js/bootstrap.js"
]
Sign up to request clarification or add additional context in comments.

Comments

1

probably you shouldn't include bootstrap.min.js in project (jquery and popper.js too).

"styles":[
"styles.css",
"../node_modules/bootstrap/dist/css/bootstrap.css"
],

"scripts":[
"../node_modules/jquery/dist/jquery.js",
"../node_modules/bootstrap/dist/js/popper.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
],

3 Comments

sorry, I add "scripts": [ "node_modules/bootstrap/dist/js/bootstrap.js" ] but do not work
you should add Jquery, bootstrap wrote based on jquery, and for nav it used popper too
you can see this too, Duplicate Question
1

if you don't want to add jquery, pooper and bootstrap JS in your project, you can do like that, i added example of navbar and btn-group

explanation

show class is use to show menu of dropdown

when you click on anchor tag, show variable toggle and that contains boolean type ( specified in .ts file ). at time div.dropdown-menu check for show class and if its false it cant be shown or vice versa.

app.component.html

In navbar

<nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent">
        <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="javascript:void(0)">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="javascript:void(0)">List 1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="javascript:void(0)">List 2</a>
            </li>
        </ul>
        <ul class="navbar-nav">
            <li class="nav-item dropdown ml-auto">
                <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" data-toggle="dropdown" (click)="show=!show">Dropdown</a>
                <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown" [ngClass]="{show: show === true}">
                    <a class="dropdown-item" href="#">Action</a>
                    <a class="dropdown-item" href="#">Another action</a>
                    <div class="dropdown-divider"></div>
                    <a class="dropdown-item" href="#">Something else here</a>
                </div>
            </li>
        </ul>
    </div>
</nav>

In btn-group

<div class="btn-group">
    <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" (click)="show=!show">Action</button>
    <div class="dropdown-menu" [ngClass]="{show: show === true}">
        <a class="dropdown-item" href="#">Action</a>
        <a class="dropdown-item" href="#">Another action</a>
    </div>
</div>

app.component.ts

import {Component, EventEmitter, OnInit, Output} from '@angular/core';

@Component({
    selector: 'app-header',
    templateUrl: './header.component.html',
    styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
    show: boolean = false;

    constructor() {}

    ngOnInit() {}

}

Comments

0

it doesn't work because i think there is an issue with the popper.js, i had same issue but i was able to fix it... Try this in your angular.json

import the scripts

"./node_modules/jquery/dist/jquery.js",
"./node_modules/bootstrap/dist/js/bootstrap.bundle.js"

it should work

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.