Angular DataTables: $(). DataTable не является функцией

Версия Angular: 6.0.4 ~ Версия узла: 10.4.1 ~ Версия NPM: 6.1.0

Я видел, что этот вопрос задавали много раз, но не ответили.

После выполнения этих инструкций по установке angular-datables и попытки использовать директиву для таблицы, как в их примере нулевой конфигурации, я продолжаю получать эту ошибку:

TypeError: $(...).DataTable не является функцией
в angular-datatables.directive.js:42

Включенные стили и скрипты

"styles": [
   "node_modules/bootstrap/dist/css/bootstrap.min.css",
   "node_modules/datatables.net-dt/css/jquery.dataTables.css",
   "src/styles.css"
],
"scripts": [
   "node_modules/jquery/dist/jquery.min.js",
   "node_modules/bootstrap/dist/js/bootstrap.min.js",
   "node_modules/datatables.net/js/jquery.dataTables.js"
]

Импорт в app.module.ts

import { DataTablesModule } from 'angular-datatables';

DataTablesModule добавлен в массив импорта.

*.component.html

<h1>View Accounts</h1>
<table class='table table-dark text-center table-striped table-hover rounded' datatable>
  <thead class='thead-dark'>
    <tr>
      <td>#</td>
      <td>Account Name</td>
    </tr>
  </thead>
  <tbody>
    <tr *ngFor='let account of db.accounts; let i = index' routerLink='/account/{{account.id}}'>
      <td>{{i+1}}</td>
      <td>{{account.accountHolder}}</td>
    </tr>
  </tbody>
</table>

person Ace    schedule 08.07.2018    source источник
comment
Правилен ли порядок ваших скриптов?   -  person JoshG    schedule 08.07.2018
comment
Как в jquery, так и в datatables, да.   -  person Ace    schedule 08.07.2018
comment
stackoverflow.com/questions/47619179/   -  person Sajeetharan    schedule 08.07.2018
comment
Я не импортирую jquery в component.ts, так как я не вызываю функцию вручную.   -  person Ace    schedule 08.07.2018
comment
Вы используете angular 2 или AngularJS? Можете ли вы поделиться своим машинописным кодом, пожалуйста?   -  person Debojyoti    schedule 08.07.2018
comment
Версия 6.0.4. По примеру, которому я следовал, в ts файл компонента добавить было нечего, только добавить datatable в таблицу в html. Вы хотите, чтобы я добавил раздел установленного файла директивы, где говорится об ошибке?   -  person Ace    schedule 08.07.2018
comment
@Debojyoti Я обновил свой вопрос.   -  person Ace    schedule 08.07.2018
comment
Что, если вы вручную вызовете $('table').DataTable() из своего компонента вместо использования директивы html?   -  person David    schedule 08.07.2018
comment
Хорошо, похоже, ваша версия узла немного устарела. Попробуйте обновить его, а затем установите все пакеты в своем приложении angular. @KayronDeacon   -  person Debojyoti    schedule 08.07.2018
comment
@Дэвид jquery__WEBPACK_IMPORTED_MODULE_2__(...).DataTable is not a function   -  person Ace    schedule 08.07.2018
comment
@Debojyoti Моя версия Angular 6.0.4. Моя версия узла 10.4.1. И NPM версии 6.1.0.   -  person Ace    schedule 08.07.2018


Ответы (1)


Ошибка была исправлена ​​путем обновления моих узловых модулей.

rm -rf node_modules/
npm cache clear
npm install

Вероятно, у меня было установлено две версии jQuery, и мой экземпляр jQuery был сброшен после того, как к нему были привязаны таблицы данных.

person Ace    schedule 09.07.2018
comment
Спасибо, это работает как шарм. для окон rd /s /q "path" - person Digital Alchemist; 17.10.2019