ngFor Structural Directive

ngFor directive is used to repeat a DOM or HTML element for a given item in array or collection.

The syntax is

*ngFor="let item of items"

Let's write some code to check how powerful is ngFor built in directive of angular.

Create new Angular App

ng new NgForDemo
cd NgForDemo

Open project to edit

Open the project in Visual Studio Code by entering command code .

Serve or run the application

Run the application on port 8000

ng serve --port 8000

Test the application

Open your browser and goto to url http://localhost:8000 and check your application running.

app

Write some hard values in app.component.ts

goto src\app\app.component.ts and enter the data below.

export class AppComponent {
  stringArray: string[];
  objectArray: Object[];
  complexObjectArray: Object;

  constructor() {
    this.stringArray = ['India', 'Afgan', 'New York'];
    this.objectArray = [
      { name: 'Nisar', mark: 35, city: 'India' },
      { name: 'John', mark: 12, city: 'Afgan' },
      { name: 'Amy', mark: 22, city: 'New York' }
    ];
    this.complexObjectArray = [
      {
        city: 'India',
        people: [
          { name: 'Amy', mark: 12 },
          { name: 'Lisa', mark: 22 }
        ]
      },
      {
        city: 'Afgan',
        people: [
          { name: 'John', mark: 35 },
          { name: 'Mary', mark: 36 }
        ]
      }
    ];
  };
}

Repeat Simple Array of String

Go to src\app\app.component.html file and update the html

<h1>
  Simple String
</h1>
<li *ngFor="let str of stringArray">
    {{str}}
</li>

This will product following output

ng-for Simple String

Repeat Array of Object

In same app.component.html file update the html

<h1>Array of Object</h1>
<table border="1px">
  <thead>
    <tr>
      <th>Name</th>
      <th>Mark</th>
      <th>City</th>
    </tr>
  </thead>
  <tr *ngFor="let arr of objectArray">
    <td>{{ arr.name }}</td>
    <td>{{ arr.mark }}</td>
    <td>{{ arr.city }}</td>
  </tr>
</table>

This produce output

ngfor Array of Object

Array of Nested Object

<h1>Array of Nested Object</h1>
<div *ngFor="let item of complexObjectArray">
  <h2>{{ item.city }}</h2>
  <table border="1px" cellspacing="0">
    <thead>
      <tr>
        <th>Name</th>
        <th>Age</th>
      </tr>
    </thead>
    <tr *ngFor="let p of item.people">
      <td>{{ p.name }}</td>
      <td>{{ p.mark }}</td>
    </tr>
  </table>
</div>

This ngFor produce the output

Array of Nested Object

Track index of array in ngFor

<li *ngFor="let str of stringArray; let num= index">
  {{num+1}} {{str}}
</li>
Download Complete Code | View working example

results matching ""

    No results matching ""