Как я могу настроить свою среду Angular 6, чтобы иметь возможность использовать сетку пользовательского интерфейса Kendo для jQuery внутри Angular 6?

Позвольте мне задать вопрос: как мне нужно настроить веб-пакет для CLI Angular 2+ (в настоящее время я использую Angular 6), чтобы использовать сетку Kendo UI для jQuery внутри Angular 6?

Моя проблема в том, что я добавил в проект Angular 6 два файла: kendo.all.min.js и jquery-1.12.4.min.js.

добавлено в html файл

<div id="grid"></div>

Внутри компонента машинописного текста я добавил импорт:

import * as kendo from '../../../../assets/kendo.all.min.js';
import * as jQuery from '../../../../assets/jquery-1.12.4.min.js';


  ngOnInit() {
    $(document).ready(function () {
      var dataSource = new kendo.data.DataSource({
        transport: {
          read: {
            url: "https://demos.telerik.com/kendo-ui/service/products",
            dataType: "jsonp"
          }
        },
        pageSize: 10
      });
      $("#grid").kendoGrid({
        dataSource: dataSource,
        pageable: true
      });
    });
  }

и в функции ngOnInit я получаю сообщение об ошибке в ".kendoGrid({" строка Ошибка: "ERROR TypeError: _assets_jquery_js__WEBPACK_IMPORTED_MODULE_7__(...).kendoGrid не является функцией"

мой файл angular.json:

"MyProject": {
      "root": "",
      "sourceRoot": "projects/src",
      "projectType": "application",
      "prefix": "projects/src",
      "schematics": {},
      "architect": {
        "build": {
          "builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/MyProject",
            "index": "projects/src/index.html",
            "main": "projects/src/main.ts",
            "polyfills": "projects/src/polyfills.ts",
            "tsConfig": "projects/src/tsconfig.app.json",
            "assets": [
              "projects/src/favicon.ico",
              "projects/src/assets"
            ],
            "styles": [
              "projects/src/styles.css",
              "node_modules/@progress/kendo-theme-default/dist/all.css",
              "assets/kendo/styles/kendo.common-bootstrap.min.css",
              "assets/kendo/styles/kendo.bootstrap.min.css",
              "assets/app-angular.css",
              "assets/main.css",
              "assets/index.css",
              "assets/angle/theme-f.css",
              "assets/fonts/fontawesome/css/font-awesome.min.css",
              "assets/fonts/simple-line-icons/css/simple-line-icons.css",
              "assets/fonts/katimavik/css/katimavik-font.css",
              "assets/angular/ngDialog/css/ngDialog.min.css",
              "assets/landing.css",
              "assets/adeco/adeco-katimavik.min.css"
            ],
            "scripts": [
              "projects/assets/kendo.js"
            ]
          },
          "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "projects/src/environments/environment.ts",
                  "with": "projects/src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
        },
        "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "Katimavik:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "Katimavik:build:production"
            }
          }
        },
        "extract-i18n": {
          "builder": "@angular-devkit/build-angular:extract-i18n",
          "options": {
            "browserTarget": "Katimavik:build"
          }
        }
      }
    }

Как я могу настроить свою среду Angular 6, чтобы иметь возможность использовать сетку пользовательского интерфейса Kendo для jQuery внутри Angular 6?

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Спасибо.

P.S.

Мне нужен пользовательский интерфейс Kendo для jQuery в Angular 6, потому что я пытаюсь выполнить миграцию с AngularJS на Angular 6. И внутри angularJS я использовал много сетки кендо для jQuery.

Поэтому, если я могу импортировать и настраивать kendo.all.min.js в своем проекте, мне не нужно переписывать каждую сетку кендо для jQuery, а просто повторно использовать существующую сетку кендо для jQuery.


person Andrei    schedule 03.12.2018    source источник
comment
Просто интересно, есть ли причина, по которой вы не используете компонент Kendo Grid Angular 2+?   -  person Shai    schedule 03.12.2018
comment
Кендо тоже поддерживает angular. Почему вы хотите использовать Jquery one?   -  person programoholic    schedule 03.12.2018
comment
Мне нужен пользовательский интерфейс Kendo для jQuery в Angular 6, потому что я пытаюсь выполнить миграцию с AngularJS на Angular 6. И внутри angularJS я использовал много сетки кендо для jQuery. Поэтому, если я могу импортировать и настраивать kendo.all.min.js в своем проекте, мне не нужно переписывать каждую сетку кендо для jQuery, а просто повторно использовать существующую сетку кендо для jQuery.   -  person Andrei    schedule 03.12.2018
comment
@Andrei, использующий jQuery напрямую в угловом проекте, - это очень плохо. Поскольку Angular использует свой виртуальный DOM для выполнения каких-либо действий, вам следует избегать использования javascript или jQuery таким образом.   -  person Jacopo Sciampi    schedule 03.12.2018
comment
Я знаю. Но у меня есть огромное количество сетки кендо для jQuery внутри моего проекта AngularJS, которую мне нужно перенести на Angular 6. Если я не смогу настроить «kendo.all.min.js» в своем проекте, мне нужно будет переписать их все - это огромная работа.   -  person Andrei    schedule 03.12.2018
comment
Также есть jQuery для Angular 6 npmjs.com/package/jquery так должно быть и так добавить также «kendo.all.min.js». надеюсь   -  person Andrei    schedule 03.12.2018


Ответы (1)


У меня была такая же проблема, и она была решена с помощью документ по кендо. В этом ниже вы можете увидеть снимок.

 "scripts": [
        "node_modules/jquery/dist/jquery.min.js",
        "projects/integration-jquery-partial/src/assets/kendo.custom.min.js"
    ]

Он должен быть в angular.json и импортировать jquery в ваш компонент, как показано ниже:

declare var $: any;

и, наконец, он доступен @ViewChild('grid', { static: false }) pivot;.

grid — это элемент в component.html, который определяется следующим образом:

<div #grid></div>
person Mohsen Zahedi    schedule 26.01.2021