2016-11-08 69 views
2

我想在angular-cli创建的angular2应用中使用一些jQuery插件。Angular-cli和jQuery插件

正如文档中所述,我使用npm安装了我需要的库,并且在可用时也安装了这些类型。 然后,我在angular-cli.json中添加了样式和脚本,如果我打开chrome调试器,则可以看到这些库已正确加载。

问题是,每次我尝试使用任何jQuery插件时,我总是会在控制台中显示“该方法不是函数”的js错误。

我创建了一个使用jQuery和fullcalendar的小例子,它可以从这个GitHub仓库中获取。

https://github.com/vmilitello/jquery-plugin

注意只存在与jQuery插件,需要选择运行(如$("#myItem").fullcalendar()$(".foo").steps())的问题。 如果您使用Sweetalert等库,则不会出现该问题。

我相信我错过了一些东西,但我真的无法弄清楚它是什么!

谢谢。

回答

1

安装(如果您没有)

npm install @types/jquery --save-dev 

你需要写在人工输入的为你的插件。比index.d.ts像

/custom_typings 
/fullcalendar 
    /index.d.ts 

创建结构

interface JQuery { 
    fullCalendar(options?: any): JQuery; 
} 

比tsconfig.json

"typeRoots": [ 
    "../node_modules/@types", 
    "../custom_typings" 
] 
+0

我的问题不是类型。你的建议只是让我避免在写我的打字稿文件时抛出jQuery选择器。基本上而不是( $(“#calendar”))。fullcalendar();我可以写$(“#calendar”)。fullcalendar();.但这与我的问题几乎没有关系。我更新了GitHub上的分支来证明此解决方案无效。不管怎样,谢谢你。 – MilitelloVinx

+0

将您的打字文件命名为index.d.ts而不是index.ts,而jQuery功能不是fullcalendar,它是fullCalendar,我在您的回购库上试过并且它可以正常工作 –

+0

谢谢!我实际上正在与gitter.im上的一些人一起玩,我们也发现了这个问题。感谢您更新分支!欣赏它。我会离开这个分支希望它能帮助别人。谢谢! – MilitelloVinx

0

除了一个小细节的所有不正确它不工作。 作为最后一部分提到here,你必须在你的组件

declare var $:any 

然后$将是全球性的,并会看到fullCalendar()功能,否则它没有为我工作。