Angular项目调用bxSlider报错Property 'bxSlider' does not exist on type 'JQuery'
解决方案
该报错属于TypeScript类型检查问题,实际运行时JS资源已正常加载所以浏览器控制台可执行成功,仅需补充bxSlider的类型定义即可解决编译和IDE提示错误。
步骤1:安装对应类型包
首先补充jQuery和bxSlider的TypeScript类型定义,执行命令:npm install @types/jquery @types/bxslider --save-dev
若@types/bxslider安装失败,可直接走步骤2手动声明类型。
步骤2:手动补充类型声明
在项目src目录下新建typings.d.ts文件,写入以下内容:
interface JQuery { bxSlider(options?: any): JQuery; }
该声明会全局扩展JQuery接口的类型,让TypeScript可以识别bxSlider方法。
步骤3:组件内正确调用
在组件ts文件中按以下方式调用,注意要放在ngAfterViewInit生命周期中确保DOM已渲染完成:
import { Component, AfterViewInit } from '@angular/core'; // 声明全局$变量,跳过类型检查(若已安装@types/jquery可省略该行) declare var $: any; @Component({ selector: 'app-your-component', templateUrl: './your-component.component.html', styleUrls: ['./your-component.component.css'] }) export class YourComponent implements AfterViewInit { ngAfterViewInit(): void { // 调用bxSlider,可传入自定义配置 $('.slider').bxSlider({ auto: true, pause: 3000 }); } }
可选校验项
如果配置后仍报错,可检查以下两项:
- 确认
angular.json的scripts数组中jquery的引入顺序在bxSlider之前,你当前的配置顺序是正确的,不要调换 - 重启服务前先清空编译缓存,可删除
node_modules/.cache文件夹后再执行ng serve
内容的提问来源于stack exchange,提问作者Fernando Adrian
相关产品推荐
相关产品推荐

