Boostrap 4 Modal 不适用于 Angular 2

Posted

技术标签:

【中文标题】Boostrap 4 Modal 不适用于 Angular 2【英文标题】:Boostrap 4 Modal not working on Angular 2 【发布时间】:2018-02-10 01:41:22 【问题描述】:

我尝试使用 https://v4-alpha.getbootstrap.com/components/modal/ 中的一个示例,向我的导航栏添加一个模式,但是单击时没有任何反应。

<div class="pos-f-t fixed-top header">
    <nav class="navbar navbar-inverse bg-inverse navbar-toggleable-md">
        <button class="navbar-toggler navbar-toggler-right" (click)="toggleSidebar()">
            <span class="navbar-toggler-icon"></span>
        </button>
        <a class="navbar-brand" href="javascript:void(0)">Calculadora ISDB-Tb</a>
 <!-- Small modal -->
        <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-sm">Small modal</button>

        <div class="modal fade bd-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-sm">
            <div class="modal-content">
              ...
            </div>
        </div>
        </div>
    </nav> 
</div>

【问题讨论】:

你在使用@angular/material吗? @masterpreenz mmm 不确定那是什么:/ 如果你没有使用 ngx-bootstrap/ng-bootstrap。您可能忘记添加 jquery @brijmcq 你能提供更直接的解决方案吗?不知道你想解释什么。 我无法为您提供这些信息。你能详细说明你做了什么吗? 【参考方案1】:

我强烈建议您使用 angular this 来使用带有 angular 的引导程序,因为它具有 angular 所需的组件且无需 jquery 干预。

话虽如此,对于您的问题,您应该使用

在您的项目中安装 jquery
npm install jquery --save

之后,您必须在脚本部分下的项目 angular-cli 中包含 jquery

"scripts": [  
          "../node_modules/jquery/dist/jquery.min.js",
//other scripts
      ]

在你的组件中,你必须声明 $ 以使用 jquery 函数作为

declare var $:any;

并在您的模板中为您的模态提供一个 id

 <div class="modal fade bd-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true" id="myModal">

并在点击按钮时调用一个函数

<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bd-example-modal-sm" (click)="openModal()">Small modal</button>

并在您的组件中将函数定义为

openModal()
$('#myModal').modal('show');

希望这会有所帮助。如果出现任何问题,请告诉我

【讨论】:

还在 angular.json 的脚本数组中添加“./node_modules/bootstrap/dist/js/bootstrap.min.js”【参考方案2】:

确保将bootstrap.min.js 文件包含在angular.json 的脚本部分中:

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

【讨论】:

【参考方案3】:

这几天我也遇到了同样的问题。最后,我把jQuery的import语句从:

import * as $ from 'jquery';

到:

declare var $ : any;

【讨论】:

以上是关于Boostrap 4 Modal 不适用于 Angular 2的主要内容,如果未能解决你的问题,请参考以下文章

响应式数据表不适用于 Bootstrap 4.3.1

boostrap 模态框

boostrap-modal.js中的坑(http://ui2.tinygroup.org/page/index.page中的弹窗插件 )

附加 DOM 元素不适用于 jQuery 可选

boostrap框架小细节

提交按钮不适用于 html 代码