--- tags: angular --- # Angular notes https://rangle.io/blog/10-ways-to-misuse-angular/ two-way bindings ```htmlembedded= <component [ngModel]="searchTerm$ | async" (ngModelChange)="searchTerm$.next($event)"> </component> ``` async pipe variable ```htmlembedded= <ng-template #state let-state="state"> <mat-slide-toggle #dpiToggle class='mat-slide-toggle--disabled' [disabled]="state?.isEnabled" (toggleChange)="enable()"> </mat-slide-toggle> </ng-template> <ng-container *ngTemplateOutlet="state; context: { state: state$ | async}"> </ng-container> ``` ### ngTemplateOutlet ```htmlembedded= <ng-template #chunk1 let-data> <div> {{ data.prop1 }} </div> </ng-template> <p>playground works!</p> <! -- declare template and context respectively --> <ng-container [ngTemplateOutlet]="chunk1" [ngTemplateOutletContext]=" { $implicit: { prop1: 'prop1'} } "> </ng-container> <! -- compact way --> <ng-container *ngTemplateOutlet="chunk1; context: { $implicit: { prop1: 'prop1-condensed' } } "></ng-container> ``` [Reusing Functionality with NgTemplateOutlet](https://tlmader.medium.com/reusing-functionality-with-ngtemplateoutlet-3e29171fbd6e) ### async pipe in ngTemplateOutlet ```htmlembedded= <ng-template #loading> start after 5 seconds </ng-template> <ng-template #asyncTemplate let-second="second"> <div *ngIf="second; else loading"> {{ second }} </div> </ng-template> <ng-container *ngTemplateOutlet="asyncTemplate;context:{second: tick$ | async}"> </ng-container> ``` ### ngProjectAs ```htmlembedded= <my-pasture> <ng-container ngProjectAs="my-pets"> <my-sheep></my-sheep> </ng-container> <my-dog ngProjectAs="my-pets"></my-dog> </my-pasture> ``` ### What ``<ng-content>`` does `<ng-content>` does not produce content, it simply moves existing one. Why? - consistent expectations - performance ### Blueprints, a.k.a TemplateRefs syntax sugar wrapping element into ng-template ```htmlembedded= <my-sheep *my-sheep-temp></my-sheep> <ng-template my-sheep-temp> <my-sheep></my-sheep> </ng-template> ``` ### Portals ```htmlembedded= <ng-template #portal> <ng-content></ng-content> </ng-template> ``` watch [video](https://www.youtube.com/watch?v=PTwKhxLZ3jI&%3Blist=LL&%3Bindex=1&ab_channel=ng-conf) ### ng-template selfie ```htmlembedded= <ng-template let-a="aVariable" [ngTemplateOutletContext]="{ aVariable: 123 }" [ngTemplateOutlet]="selfie" #selfie> <div> <span>{{a}}</span> </div> </ng-template> ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up