web-dev-qa-db-fra.com

comment utiliser jquery-ui dans angular 6

J'ai essayé plusieurs méthodes postées sur StackOverflow pour utiliser le composant jquery-ui in angular 6 mais aucune d'entre elles n'a fonctionné. Par exemple,

  1. J'ai couru npm installer jquery jquery-ui pour installer jquery et jquery-ui.

  2. Inclus ensuite dans angular.json

    "scripts": [ "node_modules/jquery/dist/jquery.js", "node_modules/jquery-ui-dist/jquery-ui.js",

L'erreur est la suivante:

AppComponent_Host.ngfactory.js [sm]:1ERROR TypeError: jquery__WEBPACK_IMPORTED_MODULE_1__(...).slider is not a function
    at AppComponent.Push../src/app/app.component.ts.AppComponent.ngAfterContentInit (http:||localhost:4200/main.js:154:56)
    at callProviderLifecycles (http:||localhost:4200/vendor.js:42663:18)
    at callElementProvidersLifecycles (http:||localhost:4200/vendor.js:42644:13)
    at callLifecycleHooksChildrenFirst (http:||localhost:4200/vendor.js:42634:29)
    at checkAndUpdateView (http:||localhost:4200/vendor.js:43565:5)
    at callWithDebugContext (http:||localhost:4200/vendor.js:44454:25)
    at Object.debugCheckAndUpdateView [as checkAndUpdateView] (http:||localhost:4200/vendor.js:44132:12)
    at ViewRef_.Push../node_modules/@angular/core/fesm5/core.js.ViewRef_.detectChanges (http:||localhost:4200/vendor.js:41948:22)
    at http:||localhost:4200/vendor.js:37684:63
    at Array.forEach (native)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<title>Car Dealer</title>
</head>
<body>
  <app-root></app-root>
</body> 
</html>

app.component.html

<div id="slider">
</div>

app.component.ts

import { Component, AfterContentInit } from '@angular/core';
import * as $ from 'jquery';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterContentInit {
  title = 'MDK';

  ngAfterContentInit() {
    $( "#slider" ).slider({
      range: true,
      values: [ 17, 67 ]
    });
  }
}

Un autre article a suggéré que je ne devrait pas utiliser angular.json de angular 6 mais utiliser index.html pour inclure des scripts, mais cela n’a pas non plus fonctionné.

J'ai inclus la suite dans index.html mais même alors la même erreur est apparue

<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
5
Syed Rafey Husain

Si vous écrivez 

import * as $ from 'jquery';

alors seul le code pour jquery (et non des plugins supplémentaires, comme jquery-ui) sera importé par le compilateur TypeScript dans la variable $.

Si tu utilises

 declare let $: any;

Ensuite, vous ne faites que signaler à TypeScript que cette variable existe. Dans ce cas, $ contiendra tout ce qui lui est attribué dans les scripts que vous avez importés dans angular.json, qui est un plugin jquery AND jquery-ui

5
David

Veuillez mettre à jour votre scripts part dans angular.json file

"scripts": [
           "../node_modules/jquery/dist/jquery.min.js",
           "../node_modules/jquery-ui-dist/jquery-ui.js"
        ]
0
Omprakash Amarwal