У меня проблема в приложении Angular 7.Я не смог воспроизвести его с помощью чистого Bootstrap CSS / JS и Popper.js.
Я пытаюсь использовать ванильный Bootstrap JS и jQuery, потому что мне нужны тосты Bootstrap и другие библиотеки.(ng-bootstrap
и ngx-bootstrap
) на данный момент не поддерживают тосты.
Минимальный (не) рабочий пример
https://github.com/Crocmagnon/angular-bootstrap4-dropdown-issue
Запустите его с npm run start
Ссылка на проблему в репозитории Popper.js
Я пытался спросить разработчика, но он не знает: https://github.com/FezVrasta/popper.js/issues/748
Действия по воспроизведению проблемы
Воспроизвести на примере:
npm i -g @angular/cli
git clone https://github.com/Crocmagnon/angular-bootstrap4-dropdown-issue.git
cd angular-bootstrap4-dropdown-issue
npm i
ng serve
Воспроизвести с нуля:
- Создать угловое приложение с помощью ng-cli
- Установить типы начальной загрузки и начальной загрузки:
npm install --save bootstrap @types/bootstrap
. @types/bootstrap
требует popper.js
в качестве зависимости.
- Включить Bootstrap 4 CSS и JS-файлы
- Включить Popper JS UMD-файл
- Добавьте
import 'bootstrap';
где-нибудь, чтобы сообщить машинописи, что функция jQuery .tooltip()
существует - Попробуйте использовать раскрывающийся список Bootstrap 4 в navbar
Соответствующий отрывокот angular.json
:
"styles": [
"node_modules/bootstrap/dist/css/bootstrap.min.css",
"node_modules/@fortawesome/fontawesome-free/css/all.css",
"src/styles.scss"
],
"scripts": [
"node_modules/jquery/dist/jquery.slim.js",
"node_modules/popper.js/dist/umd/popper.js",
"node_modules/bootstrap/js/dist/util.js",
"node_modules/bootstrap/js/dist/alert.js",
"node_modules/bootstrap/js/dist/button.js",
"node_modules/bootstrap/js/dist/carousel.js",
"node_modules/bootstrap/js/dist/collapse.js",
"node_modules/bootstrap/js/dist/dropdown.js",
"node_modules/bootstrap/js/dist/modal.js",
"node_modules/bootstrap/js/dist/scrollspy.js",
"node_modules/bootstrap/js/dist/tab.js",
"node_modules/bootstrap/js/dist/toast.js",
"node_modules/bootstrap/js/dist/tooltip.js",
"node_modules/bootstrap/js/dist/popover.js"
]
Какое поведение ожидается?
Выпадающее меню должно переключаться
Что пошло не так?
Выпадающее окно не 't toggle to
Комментарии
Я попытался включить файлы Popper ESM в мой angular.json
файл.Теперь все работает нормально, за исключением того, что я получаю сообщение об ошибке в консоли.
Uncaught SyntaxError: Unexpected token export
Я что-то здесь пропускаю?
Edit
Кажется, что это утверждение в main.ts
ломает выпадающий список:
import 'bootstrap';
Однако, если я удаляю его, Typescript выкрикивает, когда я хочу сделать Bootstrap jQuery, например отображение тостов или всплывающих подсказок:
$(() => {
$('[data-toggle="tooltip"]').tooltip();
});