类型“ JQuery <htmlelement>”上不存在属性“ modal”

时间:2019-05-02 15:31:44

标签: javascript jquery angular

我正在使用Angular 7,并且正在尝试在组件中使用jQuery的.modal函数:

show() {
    $('#' + this.id).modal('show');
}

但是我收到该错误...这是图片:

enter image description here

我还在app.module.ts中添加了以下这一行:

  

从'jquery'中将*导入为$;

但是问题仍然存在。

我发现了类似的问题here,并遵循相同的步骤,但问题仍然存在。

这是我的package-lock.json文件,我已经看到了一些与jquery相关的内容:

 "@types/bootstrap": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-4.3.0.tgz",
      "integrity": "sha512-v1BkpRVgNH9eXE+RtWFP1wh/+SAkPZaxHthS6umqf1sGV0tAvHdPHZpAOB+H74e91ElOxtS56dxbon+lXWk4AQ==",
      "dev": true,
      "requires": {
        "@types/jquery": "*",
        "popper.js": "^1.14.1"
      }

  "@types/jquery": {
      "version": "3.3.29",
      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.29.tgz",
      "integrity": "sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ==",
      "dev": true,
      "requires": {
        "@types/sizzle": "*"
      }
    },

"jquery": {
      "version": "3.4.1",
      "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
      "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw=="
    },

如果有人可以帮助,那就太好了!谢谢!

3 个答案:

答案 0 :(得分:0)

我通过手动添加名为 typings.d.ts 的文件解决了该问题,就像在Angular 7中一样,它不像以前的版本那样出现,并且在该文件中我添加了nterface JQuery { ... },现在一切正常! :)

interface JQuery {
  dataTable: any;
  datepicker: any;
  datetimepicker: any;
  moment: any;
  select2: any;
  DataTable: any;
  iCheck: any;
  animateCss: any;
  actual: any;
  fullscreen: any;
  noUiSlider: any;
  modal: any;
  tab: any;
  multiselect: any;
  spectrum: any;
}

答案 1 :(得分:0)

我也遇到了同样的问题。对我有用的只是安装JQuery的官方类型。

npm install @types/jquery --save-dev

然后在您的.tsconfig文件中找到"types"数组,并像这样插入:

"types": [
...
"jquery",
...
]

使用import * as $ from 'jquery';,您应该会很好。

答案 2 :(得分:0)

我也遇到了同样的问题,我已经完成了以下步骤,问题得到解决。

# in your terminal paste this
npm install -D @types/bootstrap --save

# put this in your app.module.ts
import * as bootstrap from "bootstrap";
import * as $ from "jquery";