Crear una tabla simple en AngularJS

Oluwafisayo Oluwatayo 23 mayo 2022
Crear una tabla simple en AngularJS

Cuando creamos páginas web en un sitio web de comercio electrónico, necesitamos usar una tabla para presentar información grande y compleja, como las listas de productos y sus precios, lista de personal, salarios, fecha de empleo, etc.

Las tablas nos ayudan a presentar estos datos de una manera bien estructurada y fácil de digerir. También nos permite administrar mejor el estado de la pantalla de nuestro sitio web.

Así que crearemos una tabla simple usando la función *ngFor, luego la pasaremos a través de una base de datos. Haremos uso de la JSON Server Rest API.

Primero, usaremos el editor de VS Code, que nos permite usar terminales desde su interior para instalar dependencias. Luego, abrimos la terminal y escribimos npm install -g json-server e instalamos el json server en nuestro sistema.

El siguiente paso es crear un nuevo proyecto.

Después de crear el proyecto, abrimos la carpeta del proyecto y agregamos un nuevo archivo llamado db.json. Aquí es donde almacenamos los datos a los que accederá el REST API.

Ahora navegamos a la carpeta db.json e ingresamos los datos que queremos tener en la tabla.

{
    "Users": [
      {
        "id": 1,
        "firstName": "Nitin",
        "lastName": "Rana",
        "email": "nitin.rana@gmail.com",
        "mobile": "2345678901",
        "salary": "25000"
      },
      {
        "id": 2,
        "firstName": "Rajat",
        "lastName": "Singh",
        "email": "rajat.singh1@gmail.com",
        "mobile": "5637189302",
        "salary": "30000"
      },
      {
        "id": 3,
        "firstName": "Rahul",
        "lastName": "Singh",
        "email": "rahul.singh1@gmail.com",
        "mobile": "5557189302",
        "salary": "40000"
      },
      {
        "id": 4,
        "firstName": "Akhil",
        "lastName": "Verma",
        "email": "akhil.verma2@gmail.com",
        "mobile": "5690889302",
        "salary": "20000"
      },
      {
        "id": 5,
        "firstName": "Mohan",
        "lastName": "Ram",
        "email": "mohan.ram1@gmail.com",
        "mobile": "7637189302",
        "salary": "60000"
      },
      {
        "id": 6,
        "firstName": "Sohan",
        "lastName": "Rana",
        "email": "sohan.rana@gmail.com",
        "mobile": "3425167890",
        "salary": "25000"
      },
      {
        "id": 7,
        "firstName": "Rajjev",
        "lastName": "Singh",
        "email": "rajeev.singh1@gmail.com",
        "mobile": "5637189302",
        "salary": "30000"
      },
      {
        "id": 8,
        "firstName": "Mukul",
        "lastName": "Singh",
        "email": "mukul.singh1@gmail.com",
        "mobile": "5557189302",
        "salary": "40000"
      },
      {
        "id": 9,
        "firstName": "Vivek",
        "lastName": "Verma",
        "email": "vivek.verma2@gmail.com",
        "mobile": "5690889302",
        "salary": "20000"
      },
      {
        "id": 10,
        "firstName": "Shubham",
        "lastName": "Singh",
        "email": "shubham.singh@gmail.com",
        "mobile": "7637189502",
        "salary": "60000"
      }
    ]
  }

Lo siguiente que debe hacer es navegar por app.component.html para crear la tabla usando la función *ngFor. Pero antes de eso, tenemos que crear un servicio Rest que accederá a los datos de db.json.

Luego nos dirigimos a la terminal. En la carpeta del proyecto, introducimos ng generate service Rest.

Después de la instalación, se crean dos archivos en la carpeta scr/app, el rest.service.spec.ts y el rest.service.ts. Ahora necesitamos navegar a rest.service.ts para hacer algo de codificación:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Users } from './Users';

@Injectable({
  providedIn: 'root'
})
export class RestService {

  constructor(private http : HttpClient) { }

  url : string  = "http://localhost:3000/Users";

  getUsers()
  {
    return this.http.get<Users[]>(this.url);
  }
  

}

Este servicio ayuda a monitorear las actividades en la url deseada por donde pasará la base de datos.

Luego nos dirigimos a app.component.html para crear la tabla usando la función *ngFor:

<h1>Table using JSON Server API</h1>
<hr>


<table id="users">

  <tr>
    <th *ngFor="let col of columns">
      {{col}}
    </th>
  </tr>
  <tr *ngFor="let user of users">
    <td *ngFor="let col of index">
      {{user[col]}}
    </td>
  </tr>

</table>

Lo siguiente que debemos hacer es dirigirnos a app.module.ts para hacer más codificación. Aquí agregamos el HttpClientModule a la matriz de importaciones.

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

Para que la fecha de la tabla en db.json sea legible por HttpClient, debemos convertirla en una propiedad de cadena. Entonces creamos un archivo Users.ts e ingresamos estos códigos:

export class Users
{
    id : string;
    firstName : string;
    lastName : string;
    email : string;
    mobile : string;
    salary : string;

    constructor(id, firstName, lastName, email, mobile, salary)
    {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
        this.mobile = mobile;
        this.salary = salary;
    }

}

Lo único que queda por hacer en este punto es embellecer la tabla usando algún estilo CSS:

h1
{
    text-align: center;
    color: #4CAF50;
}


#users {
    font-family: "Trebuchet MS", Arial, Helvetica, sans-serif;
    border-collapse: collapse;
    width: 100%;
  }
  
  #users td, #users th {
    border: 1px solid #ddd;
    padding: 8px;
  }
  
  #users tr:nth-child(even){background-color: #f2f2f2;}
  
  #users tr:hover {background-color: #ddd;}
  
  #users th {
    padding-top: 12px;
    padding-bottom: 12px;
    text-align: left;
    background-color: #4CAF50;
    color: white;
  }

Todo debería funcionar bien ahora, pero es probable que tropecemos con un error como Parameter mobile implícitamente tiene un tipo cualquiera.

Necesitamos navegar al archivo ts.config.json y agregar noImplicitAny: false a la lista. Luego, también agregamos \\ a noImplicitOverride: true,, para desactivar la configuración.

Oluwafisayo Oluwatayo avatar Oluwafisayo Oluwatayo avatar

Fisayo is a tech expert and enthusiast who loves to solve problems, seek new challenges and aim to spread the knowledge of what she has learned across the globe.

LinkedIn

Artículo relacionado - Angular Table