Angular Material Table displaying empty data fields

I'm struggling to populate data using an angular material table.

Here is the component:

export class CertificateTableComponent {

  dataSource: MatTableDataSource<any>;
  //certificates: ValueEntity[] = [];
  data: CertificateRow[] = [];
  columns: string[] = ['name', 'id', 'type', 'publicCertificate'];

  @ViewChild(MatSort, { static: true }) sort: MatSort;
  @ViewChild(MatPaginator, { static:true }) paginator: MatPaginator;

  constructor(private _integrationAccountService: integrationAccountService) {
  }

  ngOnInit() {

    this._integrationAccountService.getcertificates().subscribe(response => {
      //this.certificates = response.data;
      this.data = [];
      if (response.value) {
          for (let entity of response.value) {
              let row: CertificateRow = {
                  name: entity.name,
                  id: entity.id,
                  type: entity.type,
                  publicCertificate: entity.properties?.publicCertificate
              };
          }
      }

      this.dataSource = new MatTableDataSource(this.data);
      this.dataSource.sort = this.sort;
      this.dataSource.paginator = this.paginator;

    })

  }
}

This is the table:

  <table mat-table [dataSource]="dataSource" matSort>

    <ng-container matColumnDef="name">
      <th mat-header-cell *matHeaderCellDef mat-sort-header>Name</th>
      <td mat-cell *matCellDef="let row">{{ row.name }}</td>
    </ng-container>

    <ng-container matColumnDef="id">
      <th mat-header-cell *matHeaderCellDef mat-sort-header>Id</th>
      <td mat-cell *matCellDef="let row">{{ row.id }}</td>
    </ng-container>

    <ng-container matColumnDef="type">
      <th mat-header-cell *matHeaderCellDef mat-sort-header>Type</th>
      <td mat-cell *matCellDef="let row">{{ row.type }}</td>
    </ng-container>

    <ng-container matColumnDef="publicCertificate">
      <th mat-header-cell *matHeaderCellDef mat-sort-header>Public Certificate</th>
      <td mat-cell *matCellDef="let row">{{ row.publicCertificate }}</td>
    </ng-container>

    <tr mat-header-row *matHeaderRowDef="columns"></tr>
    <tr mat-row *matRowDef="let row; columns: columns;"></tr>

  </table>

Despite receiving correct values in the console response, the dataSource remains empty. Unsure of what I am overlooking when passing data to the table.

Answer №1

Looks like your code is pretty solid, except for one small thing - you just need to remember to include the constructed object in the data array list.

     this.data = [];
     if (result.value) {
          for (let item of result.value) {
              let entry: CertificateEntry = {
                  title: item.title,
                  number: item.number,
                  category: item.category,
                  certificate: item.properties?.certificateInfo
               };
               this.data.push(entry);      // don't forget this step
           }
       }

Keep up the good work! :)

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

The absence of the 'classes' property in the MUI component type is causing an issue in Typescript Material UI

Simply put, typescript is giving me a hard time by complaining about the missing property classes on every material-ui component. Essentially, Typescript requires the presence of the classes property in nearly all material-ui components. Here is the error ...

In Chrome dev tools, Angular CLI's 'ng serve' command fails to identify typescript sources when errors arise

How can I set up an app to have the chrome dev tools console point to the typescript sources instead of the compiled javascript sources? In the ngOnInit of our Dashboard component, I've added this line: throw new TypeError('Badaboomm!!'); ...

React Hook Form - Unable to pass an array of strings as a constant to useWatch and make it work

I am eager to monitor specific fields in my component while ensuring that I pass in a constant as an array. This way, I can maintain the order of fields consistently throughout the app and easily track which fields have been updated. I attempted a simple a ...

The value is not being displayed by ngModel

When working with HTML, I encountered an issue where the ngModel was not displaying even though the selectedValueModel was already assigned. I also tried using [ngValue], which resulted in the value being passed as undefined to my ngModelChange function. ...

What is the best way to substitute /// with the import keyword?

Whenever you create a React app using create-react-app, a file named react-app-env.d.ts is automatically generated. This file includes the line /// <reference types="react-scripts" />. Recently, I was revamping the Eslint configuration that ...

Obtain enumeration from an Array with limitations on data type

This is similar to extract property values from array, however, in this case, the type of array needs to be restricted as well. Consider the following example: type ElemProp = {id: number, name: string, quickFormat?: boolean } const formatList:ElemProp[] ...

Angular has the feature of a right float button with *ngfor

I've successfully implemented a form using Reactive Forms in Angular. Currently, my form is displayed as follows: <div class="center" appMcard> <form [formGroup]="GroupRMPM_FG"> <div formArrayName="GroupId_Name" *ngFor="let ...

The system encountered a syntax error: an unexpected token was found in the JSON at position 508

I encountered an issue with the following error message: ERROR SyntaxError: Unexpected token in JSON at position 508. I am seeking clarification on this matter and would appreciate any assistance in identifying where I may be making a mistake. Below is ...

Tips for presenting a row that states "No data found" when the datasource is devoid in Angular using material2

Currently, I am utilizing angular/material2 to showcase a table. <mat-table class="table" #table [dataSource]="dataSource" matSort > <ng-container matColumnDef="{{col}}" *ngFor="let col of displayedColumns"> <mat-header-cel ...

Ensure that properties are exclusively accepted when inserted within an interface utilizing TypeScript

Recently embarking on my typescript journey, I am in the process of developing an application using express + typescript. Here is the controller code: import { Request, Response } from 'express' import PartialUserUpdateService from '../serv ...

Angular: How to send emails to Gmail addresses without using a Node.js email server

I'm in the process of creating a contact form for users to input their name and message on a webpage. My goal is to have this information easily sent to a Gmail email address. Is there a way to send emails to a Gmail account without the need to set u ...

Unraveling the Mystery: How Angular Handles Propagation of Color CSS Property Settings to Nested Components

Angular's style scope and inheritance are detailed in the guide: The styles defined in @Component metadata only affect the template of that specific component. They do not get passed down to any nested components or projected content. To propagate ...

Consider utilizing 'fetch' or alternative techniques in place of 'fs' when reading markdown files specifically within NextJS

I'm currently working on a blog that includes math formulas in markdown pages. The markdown files are stored locally in a folder. Here is the code snippet from my Blogpage.tsx file- import React from 'react' import fs from "fs" import Markd ...

Ensure that at least one of two props is mandatory in a functional component while using typescript

Consider a scenario where we have a functional component: // my-component.tsx interface Props { propA?: string; propB?: number; } const MyComponent = ({propA, propB}: Props) => { return <div>Hello world</div> } Now, let's incorp ...

Dealing with errors in GraphQL mutation requests

While attempting to handle errors with graphql mutations using onError, I encountered issues: https://github.com/apollographql/apollo-client/issues/5708 What other options are available for error handling? I received advice previously that using try-catc ...

Having trouble sending a x-www-form-urlencoded POST request in Angular?

Despite having a functional POST and GET service with no CORS issues, I am struggling to replicate the call made in Postman (where it works). The only thing I can think of is that I may have incorrectly set the format as x-www-form-urlencoded. When searchi ...

Typedoc does not create documentation for modules that are imported

Whenever I generate documentation with TypeDoc, I am encountering an issue where imported files come up empty. If I add a class to the file specified in entryPoints, I get documentation for that specific class. However, the imported files show no document ...

The WebSocket connection attempt to 'ws://localhost:5000/notificationHub' was unsuccessful due to an error encountered during the WebSocket handshake, resulting in an unexpected response code of 307

I have successfully integrated SignalR on both my Angular client and ASP.NET Core WebAPI. However, I am encountering an error when the client attempts to connect to the server: WebSocket connection to 'ws://localhost:5000/notificationHub' failed: ...

Using TypeScript TSX with type parameters

Is it possible to define type parameters in TypeScript TSX syntax? For instance, if I have a class Table<T>, can I use something like <Table<Person> data={...} /> ...

Unable to retrieve the specific value associated with a key from JSON data

I am attempting to retrieve the value of "id" from a JSON response I received after making a POST request. { "callId": "87e90efd-eefb-456a-b77e-9cce2ed6e837", "commandId": "NONE", "content": [ { "scenarioId": "SCENARIO-1", "Channel": " ...