Я читаю JSON с сервера с Angular, чтобы отобразить его с помощью Datatables.Я правильно прочитал файл и помещен в таблицу, но функциональные возможности Datatables не работают, он говорит, что «Нет данных в таблице» и «Показано от 0 до 0 из 0 записей», но данные есть.
Плагин и его зависимости правильно установлены и импортированы.
вот файл json: http://dummy.restapiexample.com/api/v1/employees
- empleado.ts
export class Empleado{
id :number;
employee_name :string;
employee_salary :number;
employee_age :number;
profile_image :string;
}
- leer-empleados.service.ts
import { Injectable } from '@angular/core';
import { Empleado } from './empleado';
import {HttpClient} from '@angular/common/http';
import{Observable} from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class LeerEmpleadosService {
private urlFichero = 'http://dummy.restapiexample.com/api/v1/employees';
getEmpleados() :Observable<Empleado[]> {
return this.http.get<Empleado[]>(this.urlFichero);
}
constructor(private http: HttpClient) { }
}
- empleados.component.ts
import { Component, OnInit } from '@angular/core';
import { LeerEmpleadosService } from '../leer-empleados.service';
import { Empleado } from '../empleado';
@Component({
selector: 'app-empleados',
templateUrl: './empleados.component.html',
styleUrls: ['./empleados.component.css']
})
export class EmpleadosComponent implements OnInit {
empleados :Empleado[];
dtOptions :DataTables.Settings = {};
constructor( private leerService :LeerEmpleadosService) { }
ngOnInit() {
this.dtOptions = {
pagingType: "full_numbers",
pageLength: 5
}
this.getEmpleados();
}
getEmpleados() :void{
this.leerService.getEmpleados().subscribe(empleados => this.empleados = empleados);
}
}
- empleados.component.html
<table datatable class="row-border hover" [dtOptions]="dtOptions">
<thead>
<tr>
<th>ID</th>
<th>Nombre</th>
<th>Salario</th>
<th>Edad</th>
<th>Imagen</th>
</tr>
</thead>
<tbody *ngFor="let empleado of empleados">
<tr>
<td>{{empleado.id}}</td>
<td>{{empleado.employee_name}}</td>
<td>{{empleado.employee_salary}}</td>
<td>{{empleado.employee_age}}</td>
<div *ngIf="empleado.profile_image !=''; else elseImagen">
<td >{{empleado.profile_image}}</td>
</div>
<ng-template #elseImagen>
<td >No existe imagen</td>
</ng-template>
</tr>
</tbody>
</table>
- app.module.ts
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { DataTablesModule } from 'angular-datatables';
import { AppComponent } from './app.component';
import { EmpleadosComponent } from './empleados/empleados.component';
@NgModule({
declarations: [
AppComponent,
EmpleadosComponent
],
imports: [
BrowserModule,
DataTablesModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }