在angular项目中使用bootstrap的tooltip插件时,报错Property 'tooltip' does no t exist on type 'JQuery<HTMLElement>的解决方法和过程
在angular4的项目中需要使用bootstrap的tooltip插件。
1. 使用命令安装jQuery和bootstrap
npm install bootstrap jquery --save
2. 安装了bootstrap和jQuery之后,需要在.angular-cli.json中设置对jQuery和bootstrap的引用。
...
"styles": [
"styles/bootstrap.scss",
"styles.scss",
],
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../node_modules/jqueryui/jquery-ui.js",
"../node_modules/bootstrap/dist/js/bootstrap.js",
]
...
3. 使用directive来定义一个可共用的属性指令。
import { AfterViewInit, Directive, ElementRef, HostBinding, Input, OnDestroy } from '@angular/core'; /**
* @see https://getbootstrap.com/docs/3.3/javascript/#tooltips
*/
@Directive({
selector: '[appTooltip]'
})
export class TooltipDirective implements AfterViewInit, OnDestroy { // @HostBinding('attr.data-toggle')
// readonly dataToggle = 'tooltip'; @Input()
@HostBinding('attr.data-placement')
appTooltipPlacement = 'bottom'; @Input()
@HostBinding('title')
appTooltip: string; constructor(private elementRef: ElementRef) {
} ngAfterViewInit(): void {
// bugfix: 使用 container: 'body' 可以避免在 btn-group 时由于插入了 tooltip 后,
// 最后一个 button 不满足 :not(:last-child) 时导致的圆角消失的 bug
$(this.elementRef.nativeElement).tooltip({
container: 'body'
} as any);
} ngOnDestroy(): void {
$(this.elementRef.nativeElement).tooltip('destroy');
}
}
4. 在app.module.ts中声明这个directive,需要在declarations和exports中引入
...
import {TooltipDirective} from './common/directives/tooltip.directive'; @NgModule({
declarations: [
AppComponent,
...
TooltipDirective
],
imports: [
BrowserModule, FormsModule, ...
],
exports: [TooltipDirective],
entryComponents: [
....
],
providers: [...],
bootstrap: [AppComponent]
})
export class AppModule {
constructor() {
...
}
}
5.html页面里面使用[appTooltip] 来使用这个directive。
<button type="button" class="btn btn-default" (click)="new.emit()" appTooltip="新建">
<i class="i-new"></i>
</button>
5. 不过这里出现一个报错。
Property 'tooltip' does no t exist on type 'JQuery<HTMLElement>
检查了很久,后来找到了问题,没有声明$。
需要在tooltip.directive.ts文件中加上
declare let $: any;
,然后就可以正常使用了。
6.要在项目内全局设置jQuery的引用,在tsconfig.json文件中配置红色显示的部分
{
"compileOnSave": true,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"skipLibCheck": true,
"strictNullChecks": false,
"noStrictGenericChecks": false,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"types": [
"jasmine",
"node",
"jquery",
"jqueryui"
],
"lib": [
"es2017",
"dom"
]
}
}
在angular项目中使用bootstrap的tooltip插件时,报错Property 'tooltip' does no t exist on type 'JQuery<HTMLElement>的解决方法和过程的更多相关文章
- 解决在Vue项目中时常因为代码缩进导致页面报错的问题
前言 如果我们初次使用vue-cli来构建单页SPA应用,在撸代码的过程中有可能会遇到这种因为代码缩进导致 页面报错的问题,导致我们烦不胜烦.接下来我们就来看一看如何解决这个小问题... erro原因 ...
- 解决 maven 项目中加入了 lombok 库后依然报错的问题
平时我们采用 maven 引入第三方库,可以方便的管理第三方 jar 包,然加入 lombok 后启动 eclipse 依然报错,这是由于 lombok 是通过反射在运行时自动生成 getter(). ...
- 【Kotlin】spring boot项目中,在Idea下启动,报错@Configuration class 'BugsnagClient' may not be final.
报错如下: Exception encountered during context initialization - cancelling refresh attempt: org.springfr ...
- angular项目线上地址跳转或刷新报错的解决
引用地址:https://blog.csdn.net/qq_35415307/article/details/80707463 本地ng项目没问题,到了线上跳转刷新都会报404错误,相信这个问题每个做 ...
- 关于Eclipse中使用Maven进行Install安装时候报错Perhaps you are running on a JRE rather than a JDK?解决办法
所遇到的问题: 详情报错: 英文描述: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3. ...
- Eclipse检出原MyEclipse项目后 javax.servlet.http相关类都报错【我,体现着一类jar包问题的处理方法】
用Eclipse检出原来为myEclipse搭建的一个项目,检出后,所有关于httpservlet的类都报异常,说有没实现的方法? 但这个项目之前人家用MyEclipse运行都是没有问题的, 按住CT ...
- vue-cli+webpack在生成的项目中使用bootstrap方法(二)
vue-cli+webpack在生成的项目中使用bootstrap方法(一)中,是通过手动下载bootstrap库,然后手动添加到src/assets中,显然是过程太多. 当然是可以更省力些,可以通过 ...
- gulp 在 angular 项目中的使用
gulp 在 angular 项目中的使用 keyword:gulp,angularjs,ng,ngAnnotate,jshint,gulpfile 最后附完整简洁的ng项目gulpfile.js 准 ...
- 在 React项目中使用 bootstrap
在使用create-react-app 创建的项目中使用 bootstrap; 安装react-bootstrap; npm install react-bootstrap --savenpm ins ...
随机推荐
- 记录从现在开始,我的第一篇blog
最近在读刘未鹏的<暗时间>,深受作者的启发,决定开始书写blog. 书写是为了更好的思考,希望自己能持之以恒的坚持做这件事情. 这本书很推荐给所有同学,不仅关于时间管理,执行力,心理学, ...
- [HDU3117]Fibonacci Numbers
题目:Fibonacci Numbers 链接:http://acm.hdu.edu.cn/showproblem.php?pid=3117 分析: 1)后四位可以用矩阵快速幂解决.$T= \left ...
- Review: 9-13 July
9 July 并查集 int fa[]; for (int i=1; i<=n; ++i) fa[i]=i; int f(int x){return fa[x]==x?x:fa[x]=f(fa[ ...
- [CSP-S模拟测试]:water(BFS)
题目描述 有一块矩形土地被划分成$n\times m$个正方形小块.这些小块高低不平,每一小块都有自己的高度.水流可以由任意一块地流向周围四个方向的四块地中,但是不能直接流入对角相连的小块中.一场大雨 ...
- C#面向对象笔记
1.面向对象核心概念 (1)类是抽象,对象是实例,new一个对象会分配一块堆空间,对象指向该空间的地址,将对象赋值给另一个对象,只是将地址赋给它,指向的是同一块空间. e.g. class Car { ...
- Ubuntu里wine使用fcitx输入法
将启动变为脚本,添加 export XMODIFIERS="@im=fcitx"export GTK_IM_MODULE="fcitx"export QT_IM ...
- TList TObjectList的区别和使用
所在的单元 TList(Classes.pas) TObjectList(Contnrs.pas) TObjectList对象的创建方法有一个参数: constructor TObjectList.C ...
- 【ARC076F】 Exhausted
hall定理大概是匈牙利的理论基础吧 hall定理的内容:二分图\(G\)的的左部点点集为\(\rm X\),右部点点集为\(\rm Y\),设\(|\rm X|\leq |Y|\),则二分图\(G\ ...
- PHP导出带有emoji表情的文本到excel文件出问题了
前段时间做了一个导出用户信息(包含微信昵称)到excel文件的功能,一直没问题,今天突然有人反馈说导出来的数据有一些丢失了.我试了一下,发现有些数据导出没问题,有些有问题,某些列出现了空白,数据打印出 ...
- java 调用DB2 SYSPROC.ADMIN_CMD存储过程导出数据
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import ...