Angular4找不到Jquery-UI函数

我已经安装了jquery和jquery-ui

npm install --save jquery jquery-ui 

这些文件位于node_modules目录中。 我有一个声明JQuery的组件

 declare var $: JQueryStatic; 

我的jQuery的function工作得很好,但jQuery的用户界面function不。

 $('some-div').dropdown(); // works $('window').draggable(); // draggable is not recognized as a function 

所以,显然我包含jquery-ui是不正确的。 我尝试在我的.angular-cli.json页面中包含一些不同的东西,但没有成功。

我在.angular-cli文件中试过的东西:

 ... "scripts": [ "../node_modules/jquery/dist/jquery.min.js", "../node_modules/jquery-ui/ui/widgets/draggable.js", "../node_modules/jquery-ui/ui/draggable.js", ] 

我尝试直接导入组件,但是这给$ ui定义的问题。 我也有错误,定义没有定义。

我看过npm jquery-ui和jquery -ui升级指南

任何想法,我要出错?

请像这样将jQuery ui导入到index.html中

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 

并像这样在你的组件中放弃$

声明var $:any;

圣烟! 这个很麻烦,但是经过几天的努力,我发现了这个问题。

所以,这里有很多的部分答案,但这应该是完整的。 你不能从我所见过的,在你的angular度和索引中包含jquery-ui。 插件内容将被覆盖,作为一个全球性的jquery将是未定义的。 我不能通过使用angular-cli.json来实现它,但是我只是通过使用索引包含来实现它。

这里是需要做的只是使用jquery / jquery-ui的索引脚本包含。

1 :卸载jquery和jquery-ui并将其从package.json中删除

 npm uninstall --save jquery jquery-ui 

2 :删除node_modules文件夹

3 :在你的angular-cli.json文件中删除对jquery或jquery-ui的任何引用

4 :重buildnode_modules文件夹(仔细检查jquery-ui是否存在,但只要angular-cli.json没有包括它就没有关系。

 npm install 

5 :包含jquery,然后在你的索引文件中使用jquery-ui。 我用2.2.4,因为我还不信任3。

 <script src="https://code.jquery.com/jquery-2.2.4.js" integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 

6 :你想用什么组件来使用jquery或jquery插件注入$

 declare var $: any; $('draggable').draggable(); // WORKS!