如何使用 jquery 在 angular 7 中使用 bootstrap 弹出窗口?

How to use bootstrap popover in angular 7 using jquery?

我正在尝试在 angular7 中使用 jquery 实现 bootstrap4 弹出窗口。我已将 "popper.js" 包含在 index.html 中,并且也包含使用 npm。但它不工作。

Uncaught TypeError: jquery__WEBPACK_IMPORTED_MODULE_2__(...).popover is not a function

此错误仅出现在控制台中。

HTML:(sample.component.html)

<button id="option2" autocomplete="off" data-toggle="popover"> Public</button>

Jquery: (sample.component.ts)

import { Component, OnInit } from '@angular/core';
import * as $ from 'jquery';

@Component({
  selector: 'app-sample',
  templateUrl: './sample.component.html',
  styleUrls: ['./sample.component.css']
})
export class SampleComponent implements OnInit {

  constructor() { }   
  ngOnInit() {   
    $(document).ready(function(){   
      $('[data-toggle="popover"]').popover();     
      $('#option2').popover({
         html: true,
        content: function() {
          return $("#div").html();
        },
         placement: 'bottom'
      });            
    });
  }

如何在angular 7 中实现bootstrap 弹出窗口?

注意:在Angular中使用jQuery并不是@ErikHer暗示的好习惯。在这种情况下有趣的是使用 ng-bootstrap 库,它是在 angular 标准中开发的库,元素 Bootstrap 4 或更少。您也可以使用 Bootstrap 5,他们停止使用 jQuery.

总之,下面的方法可行,但不推荐

感谢@ErikHer 让答案更完整。


将您的组件文件更改为该方式:

import { Component, OnInit } from '@angular/core';
declare var $: any; // ADD THIS
import * as $ from 'jquery';

@Component({
  selector: 'app-sample',
  templateUrl: './sample.component.html',
  styleUrls: ['./sample.component.css']
})
export class SampleComponent implements OnInit {

  constructor() { }   
  ngOnInit() {   
    $('[data-toggle="popover"]').popover();
  }

你不需要使用 $(document).ready() 因为 NgOnInit() 做同样的事情。 $('[data-toggle="popover"]').popover(); 将启动您组件中的所有 Popover。

您可以使用标题、data-placement 和 data-content 属性来使 Popover 像:

<button id="option2" autocomplete="off" data-toggle="popover" data-placement="bottom" title="popover's title" data-content="popover's text"> Public</button>

或者您可以使用您在 NgOnInit() 中使用的函数初始化弹出框:

$('#option2').popover({
         html: true,
        content: function() {
          return $("#div").html();
        },
         placement: 'bottom'
      }); 

希望对您有所帮助。