PrimeNG Schedule中fullCalendar函数错误及安装问题求助
this.schedule.fullCalendar is not a function错误及依赖问题 看起来你遇到的核心问题是依赖版本不兼容以及FullCalendar没有被正确配置,导致PrimeNG Schedule无法调用fullCalendar方法。咱们一步步来解决:
1. 先理清版本匹配关系
你用的是Angular 5.2.0,对应的PrimeNG版本必须是5.x系列(PrimeNG 6+对应Angular 6+),而PrimeNG 5的Schedule组件依赖FullCalendar 3.x版本。之前安装的fullcalendar@3.8.0本身没问题,但peer依赖警告说明你其他工具包(比如codelyzer)版本和Angular 5不兼容,这可能干扰了npm的依赖安装逻辑,导致FullCalendar没被加到package.json里。
2. 重新安装兼容的FullCalendar及依赖
首先卸载现有可能有问题的FullCalendar:
npm uninstall fullcalendar --save
然后安装和Angular 5、PrimeNG 5完全兼容的版本,同时加上TypeScript类型定义:
npm install fullcalendar@3.10.2 @types/fullcalendar@3.8.0 --save
这里选3.10.2是因为它是3.x系列的稳定版,和Angular 5的适配性最好。
3. 修正其他peer依赖警告
你看到的codelyzer和schematics警告,虽然不直接影响Schedule功能,但会导致npm安装异常,建议一并解决:
- 升级codelyzer到兼容Angular 5的版本:
npm install codelyzer@4.1.0 --save-dev
- 安装匹配的@angular-devkit/schematics版本:
npm install @angular-devkit/schematics@0.0.46 --save-dev
4. 配置全局脚本加载
FullCalendar依赖jQuery和moment,必须在全局环境中加载,PrimeNG的Schedule才能调用到它。打开你的angular-cli.json(Angular 5使用该配置文件),找到scripts数组,添加以下路径:
"scripts": [ "../node_modules/jquery/dist/jquery.min.js", "../node_modules/moment/min/moment.min.js", "../node_modules/fullcalendar/dist/fullcalendar.min.js" ]
如果需要多语言支持,可以再加一行:
"../node_modules/fullcalendar/dist/locale-all.js"
5. 组件内正确引入
在使用Schedule的组件.ts文件顶部,添加以下引入:
import * as $ from 'jquery'; import 'fullcalendar';
为什么之前会出错?
this.schedule.fullCalendar is not a function:因为FullCalendar没有被全局加载,或者版本和PrimeNG不匹配,导致组件找不到这个方法。- FullCalendar没加到
package.json:大概率是peer依赖警告导致npm中断了保存逻辑,用--save参数重新安装就能解决。 - peer依赖警告:你的codelyzer版本太旧,不支持Angular 5,升级后就能消除这些警告。
现在重新启动你的项目,应该就能正常使用PrimeNG Schedule了!
内容的提问来源于stack exchange,提问作者BhargavG

