NgFor is a built-in template directive that makes it easy to iterate over something like an array or an object and create a template for each item.

This post covers Angular 2 and up

Here's a basic example of its use:

				
					
<ul>

 <li *ngFor="let user of users">{{ user.name }}</li>

</ul>

				
			

This will output html that looks like this:

				
					
<ul>

 <li>Al Dente</li>

 <li>D. Liver</li>

 <li>Pepe Roni</li>

</ul>

				
			
  • <^>let user<^> creates a local variable that will be available in the template.
  • <^>of users<^> means that we'll be iterating over the users iterable that should be made available in our component.
  • The <^>*<^> character before ngFor creates a parent template. It's a shortcut to the following syntax: <^>template="ngFor let item of items"<^>.

Available local variables

ngfor illustration for: Available local variables

You can also set local variables for the following exported values: <^>index<^>, <^>first<^>, <^>last<^>, <^>even<^> and <^>odd<^>. <^>index<^> will return the current loop index, and the other values with provide a boolean indicating if the value is true or false. For example:

				
					
&lt;ul&gt;

 &lt;li *ngFor="let user of users; let i = index; let odd = odd"

 [class.odd]="odd"&gt;

 {{i + 1}}. {{ user.name }}

 &lt;/li&gt;

&lt;/ul&gt;

				
			

Will produce the following markup:

				
					
&lt;ul&gt;

 &lt;li&gt;1. Al Dente&lt;/li&gt;

 &lt;li class="odd"&gt;2. D. Liver&lt;/li&gt;

 &lt;li&gt;3. Pepe Roni&lt;/li&gt;

&lt;/ul&gt;

				
			

See Also