Microsyntax in Angular allows you to write <div *ngFor="let item of items">{{item}}</div>
instead of <ng-template ngFor [ngForOf]="items"><div>{{item}}</div></ng-template
.
The microsyntax must:
- be know ahead of time so that IDEs can parse it without knowing what is the underlying semantics of the directive or what directives are present.
- must translate to key-value attributes in the DOM.
*:prefix="( :let | :asExpression ) (';' | ',')? ( :let | :as | :keyExp )*"
:prefix
: HTML attribute key.:key
: HTML attribute key.:local
: local variable name used in the template.:export
: value exported by the directive under a given name.:expression
: standard angular expression:asExpression = (:expression ("as" :local)?)
:let = "let" :local ("=" :export)? ";"?
:as = :export "as" :local ";"?
:keyExp = :key ":"? asExpression ";"?
A microsyntax is translated to the normal binding syntax as follows:
:prefix
and naked:expression
translate to[prefix]="expression"
:keyExp
-[prefixKey]="expression" (let-prefixKey="export")
Notice that theprefix
is added to thekey
:let
-let-local="export"
:as
-let-local="export"
*ngFor="let item of [1,2,3]"
<ng-template ngFor let-item [ngForOf]="[1,2,3]">
*ngFor="let item of [1,2,3] as items; trackBy: myTrack; index as i"
<ng-template ngFor let-item [ngForOf]="[1,2,3]" let-items="ngForOf" [ngForTrackBy]="myTrack" let-i="index">
*ngIf="exp"
<ng-template [ngIf]="exp">
*ngIf="exp as value"
<ng-template [ngIf]="exp" let-value="ngIf">
I turned this gist into a fairly comprehensive blog post that explains templates in depth, the micro-syntax (including charts for these "regex"s) and even some insight into ngIf and ngFor source (including writing our own rudimentary versions of each)
The charts that I converted from this gist are here:
https://unicorn-utterances.com/posts/angular-templates-start-to-source/#microsyntax-rules