Angular Material Tutorial - 27 - Data table

Codevolution
22 Apr 201908:48

Summary

TLDRThis video tutorial outlines the process of implementing a basic data table in Angular Material. It begins by importing the necessary modules and saving time by copying a basic data table example from the documentation. The video then explains the three main steps: defining a data source with an interface and an array, setting up column templates with the mat-column directive, and finally rendering the table rows with mat-header-row and mat-row components. The explanation is clear and concise, aiming to help users understand and create their own data tables in Angular Material.

Takeaways

  • 📌 Start by importing the necessary Angular Material modules for creating a data table.
  • 🔍 Follow the Angular Material documentation to find the example code for a basic data table.
  • 📋 Copy and paste the provided example code into your Angular component's HTML, TypeScript, and CSS files.
  • 🗂 Define a data source containing the data to be displayed in the table, using an array and an interface.
  • 🔑 Use property binding in the HTML to connect the data source to the mat-table component.
  • 📐 Define column templates using ng-container elements and mat-column-def directive to uniquely identify columns.
  • 🎨 Use mat-header-cell and mat-cell components to handle the display of headers and data cells without adding styling.
  • 🔢 Access each row of the data source and bind its properties to the view using interpolation in the column templates.
  • 🏷️ Utilize mat-header-row and mat-row components to define the structure of the table's header and data rows.
  • 🔄 Specify the displayedColumns array to control which columns are shown in the table.
  • 📈 Understand that creating a data table in Angular Material involves three main steps: defining the data source and columns, column templates, and header and row definitions.

Q & A

  • What is the first step in implementing a data table in Angular Material?

    -The first step is to import the necessary modules, specifically the MatTableModule and the MatArray module from @angular/material.

  • How do you save time when creating a basic data table in Angular Material?

    -You can save time by copying the code for a basic data table from the Angular Material documentation and then understanding its different parts.

  • Where in the Angular Material documentation can you find the examples for data tables?

    -You can find the examples in the Angular Material documentation under the Components section, then navigate to the Data Table section and click on the 'table' link in the Examples tab.

  • What is the purpose of the interface in the data table example?

    -The interface defines the type of each element in the data array, ensuring that each element has the properties mentioned in the interface, such as name, position, rate, and symbol.

  • How is the data source provided to the data table in the HTML file?

    -The data source is provided to the data table using property binding in the HTML file with the mat-table component and the dataSource attribute set to the defined data source array.

  • What is the role of the ng-container element in defining column templates?

    -The ng-container element does not render to the DOM but provides an element for applying the matColumnDef directive, which uniquely identifies a given column with a key.

  • How are the headers and data cells of columns displayed in the data table?

    -The headers are displayed using the mat-header-cell-def structural directive, and the data cells are displayed using the mat-cell-def structural directive. These directives do not attach any styling; the styling is taken care of by the mat-header-cell and mat-cell components.

  • How do you access the properties of each row in the data source?

    -You access the properties of each row by iterating through the rows, obtaining a reference to each row, and then using interpolation to bind the data to the view with element.dot.property notation.

  • What are the three steps involved in implementing a data table in Angular Material?

    -The three steps are: 1) Define the data source and the columns to be displayed, 2) Define the column templates, and 3) Include the header and row definitions.

  • What components are used to define the table header row and data rows?

    -The mat-header-row component is used for the table header row, and the mat-row component is used for the data rows.

  • How does the displayedColumns property influence the data table?

    -The displayedColumns property is an array of strings that specifies the order in which the data cells should be rendered, determining which columns are displayed in the table.

Outlines

00:00

📊 Implementing a Basic Data Table in Angular Material

This paragraph outlines the process of implementing a basic data table in Angular Material. It begins by emphasizing the importance of importing the necessary module, specifically the MatTableModule from '@angular/material'. The paragraph then suggests copying a basic data table example from the official documentation to understand the different components responsible for the data table's functionality. The steps include copying the HTML, TypeScript, and CSS code snippets from the example and pasting them into the respective component files. The paragraph also explains the significance of the data source, which in this case, is an array of periodic elements with properties like name, position, rate, and symbol. The interface and data array are declared outside the component for reusability. The paragraph concludes by explaining how to bind the data source to the table using property binding in the HTML and how to define column templates for displaying the data correctly.

05:01

🛠️ Defining Column Templates and Row Definitions for the Data Table

This paragraph delves into the specifics of defining column templates and row definitions for the data table. It explains the role of the ng-container element in creating columns and applying the mat-column-def directive to uniquely identify each column with a key. The paragraph highlights the use of mat-header-cell and mat-cell components for header and data cell display, respectively, and how they handle styling without attaching it directly to the elements. The description of the heading and data cells is discussed, with static text for headers and dynamic data binding for cells using interpolation. The paragraph also covers iterating through the data rows and accessing their properties to display in the table. Finally, it describes the use of mat-header-row and mat-row components to define the table's header and rows, with displayedColumns property to determine which columns are shown. The paragraph concludes by summarizing the three-step process of implementing a data table in Angular Material: defining the data source and columns, creating column templates, and including header and row definitions.

Mindmap

Keywords

💡Angular Material

Angular Material is a UI components library for Angular applications that follows Material Design guidelines. In the video, it is used to implement a basic data table, showcasing how to utilize its modules and components to build a user interface that adheres to Material Design principles.

💡Data Table

A data table is a visual representation of data in a tabular format, typically consisting of rows and columns. In the context of the video, a basic data table is created using Angular Material to display information in an organized and easily digestible manner.

💡Data Source

The data source is the set of data that a data table displays. It is crucial for the functionality of a data table as it provides the content to be shown in the table's cells. In the video, the data source is an array of periodic elements with properties such as name, position, rate, and symbol.

💡Interface

In programming, an interface is a contract that defines the structure of an object, specifying the methods and properties that an object must have. In the context of the video, an interface is used to define the type of each element in the data source, ensuring that each element has the necessary properties like name, position, rate, and symbol.

💡Property Binding

Property binding is a technique used in Angular to pass data from a component to a template. It allows for the dynamic creation of content based on the data properties of a component. In the video, property binding is used to associate the data source array with the data table, so the table can display the data.

💡Column Templates

Column templates in Angular Material are used to define how the data for each column in a data table should be displayed. They include instructions for rendering both the header and the data cells of a column. The video demonstrates how to create column templates for a basic data table with four columns.

💡Structural Directives

Structural directives in Angular are a type of directive that can manipulate the DOM structure, such as adding, moving, or removing elements. In the context of the video, structural directives like *ngContainer and *matHeaderRow are used to define the structure of the data table, including its columns and rows.

💡MatHeaderCell and MatCell

MatHeaderCell and MatCell are Angular Material components used to render the header and data cells of a data table column, respectively. They provide the visual representation of the data and are styled according to Material Design guidelines. In the video, these components are utilized to display the data from the data source in the table's cells.

💡Interpolation

Interpolation is a feature in Angular that allows for the insertion of data from a component into a template. It is done using double curly braces {{ }} and is used to display dynamic content. In the video, interpolation is used to bind the data from the data source to the view in the data cell templates.

💡MatHeaderRow and MatRow

MatHeaderRow and MatRow are Angular Material components used to define the header row and data rows of a data table. They help in structuring the table and determining which columns should be displayed. In the video, these components are used to create the visual representation of the table's header and rows based on the data source.

Highlights

Importing the Angular Material module is the first step to implement a basic data table.

The MatTableModule and the MaterialModule are imported to use the data table functionality.

Copying the basic data table code from Angular Material documentation can save time and provide a foundation to understand the data table components.

The second example in the data table section of the Angular Material documentation demonstrates the basic use of MatTable.

The HTML structure for the data table is first created, followed by the TypeScript and CSS files.

The data source for the data table consists of an array of periodic elements with properties defined by an interface.

The interface for the periodic elements includes properties such as name, position, rate, and symbol.

The data source array is initialized with element data, which is used within the component.

In the HTML, the MatTable component is utilized with property binding to connect the data source to the table.

Column templates are defined in the HTML using ng-container elements with the matColumnDef directive.

The mat-header-cell and mat-cell components handle the styling for header and data cells, respectively.

The structural directives, mat-header-cell and mat-cell, are used to define how headers and data cells are displayed.

Interpolation is used to bind the data from each row to the view in the data cells.

The mat-header-row and mat-row components are used to define the table header row and data rows, respectively.

The displayedColumns property is an array of strings that determines which columns are shown in the table.

The row variable in the mat-row component contains the data for the corresponding row.

The process of implementing a data table in Angular Material involves three steps: defining the data source and columns, creating column templates, and including header and row definitions.

The video provides a step-by-step guide on creating a basic data table in Angular Material, emphasizing the practical application of the framework.

The next video will explore making changes to the data table and understanding the impact on its functionality.

Transcripts

00:00

all right in this video let's take a

00:02

look at implementing a basic data table

00:05

in angular material the first step as

00:08

always is to import the module so in

00:11

material dot module dot es import mat

00:15

table module and added to the material

00:17

array

00:19

now what we are going to do to save us

00:23

some time is copy the code for a basic

00:27

data table and then understand the

00:29

different parts that are responsible for

00:32

the functioning of a data table so in

00:35

the material Doc's go to components and

00:38

then to the data table section and click

00:41

on the table link over here in the

00:45

examples tab we have a basic data table

00:49

now go to the second example

00:51

which is basic use of math table and

00:54

uses display flex and click on the code

00:57

icon now let's copy paste the code first

01:02

the HTML so copy and paste it in AB

01:08

component dot HTML next the typescript

01:13

file so go to TS copy the interface and

01:20

the data in AB component TS paste it

01:26

right after the import statement then go

01:31

back to the documentation and copy the

01:34

two lines of code from the component

01:37

class go back to BS code and in app

01:41

component paste them finally copy the

01:46

CSS so we're here CSS and then copy this

01:51

and paste it in AB component dot CSS now

01:57

if we save all the files and take a look

02:00

at the browser you should be able to see

02:03

a data table now let's understand the

02:07

different parts that make up this data

02:10

table the first part to implementing a

02:14

data table is the data source every data

02:18

table needs a data source that contains

02:21

the data to be displayed in our example

02:24

we have the data of periodic elements we

02:28

have an interface that defines the type

02:32

of

02:33

each element so a periodic element will

02:36

have a name position rate and symbol

02:40

right below the interface is where you

02:43

see the array of periodic elements we

02:46

have ten elements each having properties

02:48

mentioned in the interface what you have

02:52

to notice here is that the interface and

02:54

the data array is declared outside the

02:56

component to be able to use it in the

02:59

component we need to create a property

03:01

and initialize it for that purpose we

03:04

have data source which is initialized to

03:07

element data this array right here

03:12

alright the next thing to do is to

03:15

provide this data source to the data

03:17

table and we do that in the HTML so in

03:22

am dot component dot HTML we create a

03:25

data table with mat table component and

03:29

to provide the data source they make use

03:32

of the data source attribute we use

03:35

property binding to bind the property

03:38

defined in the component class so data

03:41

source is equal to element data which is

03:44

provided here so that is the first step

03:49

to implementing a data table creating

03:52

the data source and binding it to the

03:54

table the second step is to define the

03:59

column templates in the browser you can

04:04

see that we have four columns the

04:07

position number name weight and symbol

04:11

in the code we define the four columns

04:14

each inside its own ng container element

04:18

physician name weight and symbol the ng

04:25

container element will not be rendered

04:28

to the Dom but it will provide an

04:30

element for applying this mat column def

04:34

directive the mat column death directive

04:38

is what uniquely identifies a given

04:41

column with a key physician named way

04:46

and symbol inside the ng container

04:51

element we will have all the

04:53

configuration for a given column you can

04:57

see that we have the template that

04:58

defines how to display the header for a

05:00

given column identified using the map

05:04

header cell death structural directive

05:06

we also have another template that

05:09

defines how to display the data cells of

05:12

a given column using the mat cell def

05:15

structural directive the to structural

05:19

directives do not attach any styling to

05:21

the elements the styling is taken care

05:24

of by mat header cell and mat cell

05:29

components next let's talk about the

05:33

content of the heading and the data

05:35

cells for the heading you can see that

05:37

we just have static text number name

05:41

weight and symbol but for the data cell

05:46

we get access to each row of the data

05:50

source we obtain a reference to each row

05:54

and then access the different properties

05:57

of each row we then use interpolation to

06:01

bind the data to the view so in our data

06:04

source we have ten rows we iterate

06:07

through the rows get a reference to each

06:10

row and store it in the element variable

06:13

and then we access the appropriate

06:15

property in the column template so

06:18

element dot position dot name dot weight

06:21

in dot symbol these are the different

06:24

properties for each element

06:28

all right now what we have done so far

06:31

is just define the column template how

06:34

it's supposed to look the final step is

06:37

to define the rows in the data table and

06:40

for that we make use of two more

06:42

components to define the table header

06:46

row we make use of the mat header row

06:49

component and to determine which columns

06:52

have to be displayed in the table mat

06:55

header row death structural directive is

06:58

used to this we assign displayed columns

07:02

property which is an array of columns we

07:06

have mentioned in the component class so

07:08

display columns is an array of strings

07:11

with positioned name weight and symbol

07:17

similarly to display the data rows we

07:20

make use of the mat rope component now

07:24

with mat Perot death structural

07:26

directive we also have a variable

07:28

exported that we have named as row

07:32

containing the data of that given row

07:35

and we have to specify the columns

07:38

property which contains the order in

07:41

which the data cells should be rendered

07:43

again this is displayed columns property

07:47

so when you run this code we should have

07:50

the data table working as expected

07:53

position name weight and symbol and then

07:56

the different rows corresponding to each

07:59

entry or each item in the element array

08:03

so to summarize there are three steps in

08:06

implementing a data table in angular

08:09

material first up define the data source

08:12

and the columns to be displayed second

08:15

step define the column templates and

08:18

finally the third step include the

08:20

header and the row definitions so we are

08:25

able to create a very basic data table

08:27

we copy pasted the code and did not

08:30

really code anything as such so in the

08:33

next video let's also try to make some

08:36

changes and see how that impacts the

08:39

data table that will give you guys a

08:41

much better idea of how the data table

08:44

works I will see you guys in the next

08:46

video