11

I'm working to get angular way work and use this code https://l-lin.github.io/angular-datatables/#/basic/angular-way

- node version:v6.10.3
- npm version:v6.10.3
- angular version:4.3.2
- jquery version:3.2.1
- datatables version:1.10.15
- angular-datatables version:4.2.0
- angular-cli version:1.2.6

I have made this steps to fix Unexpected value "DataTablesModule" imported by the module "AppModule". Please add a @NgModule Annotation.

 1-in tsconfig.json add
"baseUrl": ".",
"paths": {
   "@angular/*": [
    "node_modules/@angular/*"
 ]
 2-in webpack.comon.js add 
  plugins: [
         new TsConfigPathsPlugin({
          configFileName: helpers.root('tsconfig.json'),
          compiler: "typescript",
        })
   ]  

but get this error

Can't bind to 'dtOptions' since it isn't a known property of 'table'. 

Can anyone help me please to fix this isuue?

Ali-Alrabi
  • 1,515
  • 6
  • 27
  • 60

7 Answers7

23

If you have TablesComponent, you should use this line in your tables.module.ts file:

import { DataTablesModule } from 'angular-datatables';

And add DataTablesModule to @NgModule imports.

I had error when I add these lines in appComponent, but when I import in my special module, the problem was solved.

René Vogt
  • 43,056
  • 14
  • 77
  • 99
Ganj Khani
  • 1,229
  • 15
  • 20
3

Step 1. Update ".angular-cli.json" file Styles and scripts properties as below.

{
 ........
  "apps": [
    { 
      "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        //for bootstrap4 theme
        "../node_modules/datatables.net-bs4/css/dataTables.bootstrap4.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js",
        //for Datatable
        "../node_modules/datatables.net/js/jquery.dataTables.js",
        //for bootstrap4
        "../node_modules/datatables.net-bs4/js/dataTables.bootstrap4.js"
      ]
      ...
    }
  ],
 .....
}

Step 2. import DataTable Module in our Angular Application Module(Where you need.)

import { DataTablesModule } from 'angular-datatables';

Below is the example of html table which is using DataTable -

<table id='table' datatable [dtOptions]="dtOptions" class="table table-striped table-bordered" cellspacing="0" width="100%">
      </table>
Ravindra Vairagi
  • 1,055
  • 15
  • 22
2

import { DataTablesModule } from 'angular-datatables';

that's right (Ganj Khani) import the DataTablesModule into app.module.ts file and put it in

@NgModule({ imports: [ CommonModule, DataTablesModule, MyRoutingModule ]

It will work as expected and make sure you have all configured properly for the dtOptions in your respective .ts file.

Manoj
  • 692
  • 1
  • 10
  • 24
0

For me it was quite simple fix. I forgot to add the datatable attribute to the table element. You must add that for the DataTableModule to pick it up.

Example:

<table datatable [dtTrigger]="dtTrigger" [dtOptions]="dtOptions"></table>
Christopher Smit
  • 953
  • 11
  • 27
0
Upgrade Your Project with this command :
>ng update @angular/cli   @angular/core   --allow-dirty   --force
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { CustomerComponent } from './customer/customer.component';
import { DataTablesModule } from "angular-datatables";
import { CommonModule } from '@angular/common';

const routes: Routes = [

  { path: 'customer', component: CustomerComponent}
];

@NgModule({

  declarations: [

    CustomerComponent    ////without class declarations dataTable will not work....
  ],

  imports: [RouterModule.forRoot(routes), DataTablesModule, CommonModule],   //imports DataTablesModule here

  exports: [RouterModule]
})

export class AppRoutingModule { }
Md Shahriar
  • 2,072
  • 22
  • 11
0

Check the right module from you are importing:

import { DataTablesModule } from 'angular-datatables';

-1

Depending on how you've structured your angular app (if you're have shared modules), you may need to import it using forRoot so it's a treated as a singleton service: DataTablesModule.forRoot(). This did the trick for me.

Rich
  • 137
  • 4