Bootstrap 4.1.1 Navbar не работает с Angular 6

Я пытался работать с Navbar с меню свертывания и выпадающей ссылкой, используя Bootstrap 4.1.1 и Angular 6, но почему-то Navbar вообще не работает. Я вижу элементы правильно, но они не работают должным образом.

Я установил Bootstrap через Angular CLI, используя зависимости 'ng install bootstrap --save' и Bootstrap: 'ng install jquery --save' и 'ng install popper.js --save'

Я также включил Bootstrap, jquery и popper.js в package.json и angular.json.

package.json:

"dependencies": {
  "@angular/animations": "^6.0.0",
  "@angular/common": "^6.0.0",
  "@angular/compiler": "^6.0.0",
  "@angular/core": "^6.0.0",
  "@angular/forms": "^6.0.0",
  "@angular/http": "^6.0.0",
  "@angular/platform-browser": "^6.0.0",
  "@angular/platform-browser-dynamic": "^6.0.0",
  "@angular/router": "^6.0.0",
  "bootstrap": "^4.1.1",
  "core-js": "^2.5.4",
  "jquery": "^3.3.1",
  "popper.js": "^1.14.3",
  "rxjs": "^6.0.0",
  "zone.js": "^0.8.26"
},
"devDependencies": {
  "@angular-devkit/build-angular": "~0.6.0",
  "@angular/cli": "~6.0.0",
  "@angular/compiler-cli": "^6.0.0",
  "@angular/language-service": "^6.0.0",
  "@types/jasmine": "~2.8.6",
  "@types/jasminewd2": "~2.0.3",
  "@types/jquery": "^3.3.2",
  "@types/node": "~8.9.4",
  "codelyzer": "~4.2.1",
  "jasmine-core": "~2.99.1",
  "jasmine-spec-reporter": "~4.2.1",
  "karma": "~1.7.1",
  "karma-chrome-launcher": "~2.2.0",
  "karma-coverage-istanbul-reporter": "~1.4.2",
  "karma-jasmine": "~1.1.1",
  "karma-jasmine-html-reporter": "^0.2.2",
  "protractor": "~5.3.0",
  "ts-node": "~5.0.1",
  "tslint": "~5.9.1",
  "typescript": "~2.7.2"
}

angular.json:

        "styles": [
          "./node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/styles.css"
        ],
        "scripts": [
          "./node_modules/jquery/dist/jquery.min.js",
          "./node_modules/popper.js/dist/popper.min.js",
          "./node_modules/bootstrap/dist/js/bootstrap.min.js"
        ]

html:

<nav class="navbar navbar-expand-md navbar-light bg-light">
    <a href="#" class="navbar-brand">RecipeBook</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsing-nav-bar" aria-controls="collapsing-nav-bar"
        aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="collapsing-nav-bar">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item">
                <a href="#" class="nav-link">Recipes</a>
            </li>
            <li class="nav-item">
                <a href="#" class="nav-link">Shopping list</a>
            </li>
        </ul>
        <ul class="navbar-nav">
            <li class="nav-item dropdown">
                <a href="#" class="nav-link dropdown-toggle" id="dropdownMenu" data-toggle="dropdown" 
                aria-haspopup="true" aria-expanded="false">
                    Manage
                </a>
                <div class="dropdown-menu" aria-labelledby="dropdownMenu">
                    <a href="#" class="dropdown-item">Save</a>
                    <a href="#" class="dropdown-item">Fetch</a>
                </div>
            </li>
        </ul>
    </div>
</nav>

Я предпочитаю использовать собственную библиотеку Bootstrap, и я предпочитаю не использовать ng-bootstrap или хаки, такие как включение CDN в заголовок.

Я что-то здесь делаю не так? Любые советы о том, как решить эту проблему, будут оценены.


person Winai Prathumwong    schedule 07.06.2018    source источник
comment
чтобы включить bootstrap, вы должны включить / импортировать файл bootstrap css в свой файл styles.css, а не свойство массива styles в вашем angular.json   -  person mast3rd3mon    schedule 20.07.2018


Ответы (5)


просто добавьте в скрипт всплывающее окно директории umd.

 "./node_modules/popper.js/dist/umd/popper.min.js",
person Lasitha Narangoda    schedule 15.06.2018
comment
Привет, спасибо за совет, я в какой-то степени смог его отремонтировать. Просто изменив URL-адрес popper.js, я получил раскрывающийся список Navbar. Не думал, что дистрибутивная папка может так сильно повлиять на результат. Спасибо - person Winai Prathumwong; 15.06.2018
comment
У меня такая же проблема, но мой popper.min.js правильный. Он находится под umd. Я заметил, что это работает, когда приложение создается и запускается на сервере (http-server), но не в режиме разработки (ng serve). - person Julez; 28.12.2018

Я потерял 2 часа в погоне за призраками. Обратите внимание, что в angular.json есть два сегмента сценария. Один под тестом и один под сборкой. Вы должны добавить сегмент под сборку. Я добавлял в процессе тестирования, поэтому angular не видел bootstrap, а popper js

"architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/myBootstrapTestApp",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
            "styles": [
              "src/styles.scss"
            ],
            "scripts": [
              "node_modules/jquery/dist/jquery.js",
              "node_modules/popper.js/dist/umd/popper.min.js",
              "node_modules/bootstrap/dist/js/bootstrap.js"]
          },
person Levijatanu    schedule 21.06.2018
comment
Удивительный! Это заставило меня удариться головой о стену. Спасибо! - person Jim's Code Corner; 01.10.2019

путь к popper должен быть: node_modules / popper.js / dist / umd /

        "styles": [
          "node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/styles.css"
        ],
        "scripts": [
          "node_modules/jquery/dist/jquery.min.js",
          "node_modules/popper.js/dist/umd/popper.min.js",
          "node_modules/bootstrap/dist/js/bootstrap.min.js"
        ]
person Stellar Creed    schedule 19.08.2018

Через некоторое время я только поместил библиотеку начальной загрузки под jquery и порядок поппера ...

"styles": [
              "src/styles.scss",
              "node_modules/bootstrap/dist/css/bootstrap.min.css"
            ],
            "scripts": [
              "node_modules/jquery/dist/jquery.min.js",
              "node_modules/popper.js/dist/umd/popper.min.js",
              "node_modules/bootstrap/dist/js/bootstrap.min.js",
              "node_modules/fontawesome/index.js"
            ]
person Julio Rodriguez    schedule 23.11.2020

Мне пришлось добавить это в package.json

"dependencies": {
   "core-js": "^2.5.4",
   "jquery": "^3.3.1",
   "popper.js": "^1.14.3",

}
"devDependencies": {    
    "@types/jquery": "^3.3.2",
}

Также это для angular.json

"architect": {
        "build": {
            "scripts": [
              "node_modules/jquery/dist/jquery.min.js",
              "node_modules/popper.js/dist/umd/popper.min.js",
              "node_modules/bootstrap/dist/js/bootstrap.min.js"

            ]
          },

не забудьте запустить npm install после внесения этих изменений.

person Vikki    schedule 03.03.2021