Under the hood Angular compiles structural directives into ng-template elements, e.g.:
<!-- This -->
<div *ngFor="let item of [1,2,3]">
<!-- Get expanded into this -->
<ng-template ngFor [ngForOf]="[1,2,3]" let-item="$implicit"></ng-template>
The value passed to *ngFor directive is written using microsyntax. You can learn about it in the docs.
Also check out an interactive tool that shows the expansion by Alexey Zuev