Как установить Bootstrap 5 с Popper в приложение Angular

Я пытаюсь реализовать раскрывающийся список начальной загрузки в моем компоненте Angular, но он не работает. Выпадающий список не открывается по клику, вместо этого я получаю консольные ошибки. Я попытался создать модальный бутстрап, и это тоже не сработало. При этом ошибок не было. Проведя небольшое исследование, я обнаружил, что мне нужно включить popper.js и bootstrap.min.js в мой файл project.json (nrwl эквивалентно angular.json). Я добавил его в "scripts"-массив:

"name": "nosi",
  "$schema": "../../node_modules/nx/schemas/project-schema.json",
  "projectType": "application",
  "sourceRoot": "apps/nosi/src",
  "prefix": "nosi",
  "targets": {
    "build": {
      "executor": "@angular-devkit/build-angular:browser",
      "outputs": ["{options.outputPath}"],
      "options": {
        "outputPath": "dist/apps/nosi",
        "index": "apps/nosi/src/index.html",
        "main": "apps/nosi/src/main.ts",
        "polyfills": "apps/nosi/src/polyfills.ts",
        "tsConfig": "apps/nosi/tsconfig.app.json",
        "inlineStyleLanguage": "scss",
        "assets": ["apps/nosi/src/favicon.ico", "apps/nosi/src/assets"],
        "styles": ["apps/nosi/src/styles.scss"],
        "scripts": [
          "../node_modules/bootstrap/dist/js/bootstrap.min.js",
          "../node_modules/popper.js/dist/umd/popper.js"
        ]
      },

Также я добавил bootstrap.min.css в свой файл styles.scss:

/* You can add global styles to this file, and also import other style files */

/* Importing Bootstrap SCSS file. */
@import '~bootstrap/scss/bootstrap';
@import '~bootstrap/dist/css/bootstrap.min.css';
@import '~bootstrap/dist/css/bootstrap.css';

Несмотря на эти изменения, мой раскрывающийся список все еще не работает.

Я использую последнюю версию Bootstrap 5.2.3 вместе с Angular 12.2.5. Кто-нибудь знает, что я делаю неправильно?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я столкнулся с той же проблемой, но нашел решение: поскольку popper.js устарел, вместо этого вы должны использовать @popperjs/core. Более того, вы должны обратить внимание на порядок элементов в "scripts"-массиве в angular.json (подробнее об этом ниже).

Вот что в итоге сработало для меня:

  1. Я установил бутстрап: npm i bootstrap
  2. Я установил @popperjs/core: npm i @popperjs/core
  3. Я добавил несколько записей в свой angular.json, как вы можете видеть ниже:
"styles": [
    "node_modules/bootstrap/dist/css/bootstrap.css",
    "src/styles.scss"
],
"scripts": [
    "node_modules/@popperjs/core/dist/umd/popper.min.js",
    "node_modules/bootstrap/dist/js/bootstrap.js"
]

Важный:

  • Порядок скриптов в "script"-массиве должен быть таким, как показано здесь: сначала popper.min.js, затем bootstrap.js.
  • Также путь к node_modules в вашем проекте может не совпадать с моим (как я вижу, ваши пути начинаются с ../, поэтому вам нужно будет написать "../node_modules/@popperjs/core/dist/umd/popper.min. js" и др.).
  • Я думаю, что импорт, который вы сделали в styles.scss, не нужен

Другие вопросы по теме