I have installed Jquery and Jquery-ui
npm install --save jquery jquery-ui
The files are in the node_modules directory.
I have a component that declares Jquery
declare var $: JQueryStatic;
My jquery functions work just fine, but the jquery-ui functions do not.
$('some-div').dropdown(); // works
$('window').draggable(); // draggable is not recognized as a function
So, obviously my inclusion for jquery-ui is not correct. I tried including a bunch of different things in my .angular-cli.json page to no success.
Things I have tried in my .angular-cli file:
...
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/jquery-ui/ui/widgets/draggable.js",
"../node_modules/jquery-ui/ui/draggable.js",
]
I tried importing directly into the component, but that gave problems with $ui being defined. I also got errors that defined is not defined.
I have looked at npm jquery-ui and Jquery-ui Upgrade guides
Any ideas where I am going wrong?
The solution to define jquery-ui in angular-cli.json (and avoid to add it in index.html) is:
1 : Import jquery-ui-dist
npm install jquery jquery-ui-dist
2: Add scripts in angular-cli.json
"scripts": [
"../node_modules/jquery/dist/jquery.min.js",
"../node_modules/jquery-ui-dist/jquery-ui.js"
],
Source :
https://stackoverflow.com/a/38795318
HOLY SMOKES! This one was very troublesome, but I figured it out after days of trying.
So, there are a lot of partial answers out there, but this should be complete.
You cannot from what I have seen, include jquery-ui in your angular-cli and the index. The plugin inclusions will be overwritten and jquery as a global will be undefined.
I couldn't get it to work by using just the angular-cli.json, but I did get it to work by only using index inclusion.
Here is what needs to be done to only use index script inclusion for jquery/jquery-ui.
1: Uninstall jquery and jquery-ui and remove it from the package.json
npm uninstall --save jquery jquery-ui
2: Delete the node_modules folder
3: Delete any references to jquery or jquery-ui in you angular-cli.json file
4: Rebuild the node_modules folders (double check that jquery-ui is not there, but it doesn't really matter so long as the angular-cli.json doesn't have it included.
npm install
5: include jquery, then jquery-ui in your index file. I used 2.2.4, because I don't trust 3 yet.
<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: In what ever component you want to utilize jquery or jquery plugin inject $
declare var $: any;
$('draggable').draggable(); // WORKS!
please import jQuery ui to index.html like this
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
And decare $ in your component like this
declare var $: any;