错误TS2339:属性';模态';不存在于类型';JQuery';

错误TS2339:属性';模态';不存在于类型';JQuery';,jquery,modal-dialog,typescript,Jquery,Modal Dialog,Typescript,我正在使用AngularJS的Typescript。 我对使用jQuery库的类型化定义的modals有一个问题。 我收到以下错误:“错误TS2339:类型“JQuery”上不存在属性“modal” 版本:jQuery库,版本1.10.x/2.0.x 定义: 代码 我在angular.d.ts <reference path="../jquery/jquery.d.ts" /> 我的全局供应商参考文件如下所示: <reference path='../vendor/typ

我正在使用AngularJS的Typescript。 我对使用jQuery库的类型化定义的modals有一个问题。 我收到以下错误:“错误TS2339:类型“JQuery”上不存在属性“modal”

版本:jQuery库,版本1.10.x/2.0.x 定义:

代码

我在
angular.d.ts

<reference path="../jquery/jquery.d.ts" />

我的全局供应商参考文件如下所示:

<reference path='../vendor/types/angular/angular.d.ts' />
<reference path='../vendor/types/angular/angular-mocks.d.ts' />
<reference path='../vendor/types/jasmine/jasmine.d.ts' />

您的问题是由于文件中缺少名为
modal
的属性造成的

如果您确定这在纯JS中工作,您可以像这样使用它

$scope.delete = function (id) {
  Photo.get({id: id}, function(result) {
     $scope.photo = result;
     (<any>$('#deletePhotoConfirmation')).modal('show');
  });
};
$scope.delete=函数(id){
get({id:id},函数(结果){
$scope.photo=结果;
(已具有
模式
选项的库


祝你好运!

尝试为引导程序DefiniteTypted安装打字


打字安装--global--save dt~bootstrap

使用较新版本的typescript(>v2),我相信:

编辑: 正如hughjdavey在评论中所说,您还需要以下导入行: 从“引导”导入*作为引导;
从“jquery”中导入*作为$;

这对我来说很有用,我在第一行添加:
declare var$:any;


这个declare
$
类型是
any

在我的情况下,我不得不使用

npm install -D @types/bootstrap
然后我不得不导入引导程序

import * as bootstrap from 'bootstrap';
但最重要的步骤是删除jquery

import * as $ from 'jquery';
否则它会给我这个错误:

TypeError:$(…)。模式不是函数

加上

import * as bootstrap from "bootstrap";
import * as $ from "jquery";
在您的
app.module.ts

<reference path="../jquery/jquery.d.ts" />
并安装这些软件包

npm安装@types/jquery--保存开发


npm install@types/bootstrap——保存开发人员是的,我也必须包含这两个导入,以使我的应用程序可以通过以下方式发布:

import * as bootstrap from "bootstrap";
import * as $ from "jquery";

我将它们添加到使用jQuery的组件中。

我可以按如下方式解决它:

import*作为$from“jquery”;
($('#menuModal')。模态('toggle');

当我将angular升级到版本9时,我遇到了这个问题

这是我的解决方案,我为谁分享

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

$('#ManualMinMaxModal').modal('show');
$('#realTimeTable').DataTable()
改为

($('#ManualMinMaxModal') as any).modal('show');

类型“JQuery”上不存在属性“DataTable”

$('#ManualMinMaxModal').modal('show');
$('#realTimeTable').DataTable()
改为

($('#realTimeTable') as any).DataTable()
!($.fn as any).DataTable.isDataTable('#realTimeTable')

改为

($('#realTimeTable') as any).DataTable()
!($.fn as any).DataTable.isDataTable('#realTimeTable')
更新:


转换为任意有时不起作用,最后的解决方案是将declare从
import*as$从'jquery'
更改为
declare var$:any;

Angular 8+版本的解决方案:

不工作:

$('#deletePhotoConfirmation').modal('show');
相反,请使用以下命令:

($('#deletePhotoConfirmation') as any).modal('show');
进口:

import * as $ from 'jquery';

祝你好运

$scope.delete=function(id){Photo.get({id:id},function(result){$scope.Photo=result;$('#deletepotoconfimation')。modal('show');//错误行});我在'angular.d.ts'文件中引用'jquery.d.ts':///我的全球供应商参考文件看起来像:////@TomekB请不要在评论中发布代码,编辑问题将其发布在那里,下面问题底部有编辑链接标签解释了解决此问题的所有步骤我已经选中了'jquery.SimpleModel.d.ts'。它有效很好,谢谢!这在一个安装了jquery类型的项目中对我有效-它添加到jquery接口中,这样
$(模态选择器)。模态('show')
etc编译fine我还必须从“bootstrap”添加
import*作为引导;
到我的
app.module.ts
否则IntelliJ停止抱怨,但它仍然不会在命令行上编译,并出现相同的错误。不管你怎么称呼它(不必是引导)。为了绝对清楚,我还在同一个文件中从“jquery”导入了
作为$;
,它允许我使用
$(…)
在我的组件中。谢谢@hughjdavey!!!感谢您包含这些特定的导入语句…我真不敢相信这是多么晦涩,因为它的需求有多普遍?!我不知道为什么,但这对我来说不正常…有时它可以工作。但大多数时候,它不工作…你知道为什么吗?我运行了命令并导入了
组件ts文件中的bootstrap.js
,但仍然失败如果将“bootstrap”添加到tsconfig.json中“compilerOptions”对象的“types”属性中,您可以避免因未使用的“bootstrap”引用而污染代码。您是在哪里添加的