signal(), computed(), effect()`
$index, $odd, $even, $count, $first, $last
@if(), @else if and @else()
<ng-container *ngTemplateOutlet="estimateTemplate;context:{}">
selector: 'button[appButton]'
ViewEncapsulation.Emulated
ViewEncapsulation.ShadowDom
:host([variant="hidden"]) {
transform: translateY(-1px);
:host header {
:host-context(.remove) .encapsulate {
text-decoration: line-through;
############################ LIFE CYCLES
@ViewChild() and viewChild() signal
@ViewChildren() and viewChildren() signal
@ContentChild() and contentChild() signal
@ContentChildren() and contentChildren() signal
############################# DIRECTIVE
SAC === Structure Directive, Attribute Directive, Component Directive
*ngIf="isShow()"==> [ngIf]="isShow()"
selector: '[appSafeLink]', selector: 'a[appSafeLink]', selector: 'div[appSafeLink]'
Directive binding [appDirective]
Event binding (appDirective)
exportAs and use via Template Reference and @ViewChild
Directive composition and combination hostDirectives
{ directive: LogDirective, inputs: ['message'], outputs: ['clicked'] },
{ directive: TextHoverDirective, inputs: ['textColor'] },
############################## PIPE
provideEnvironmentInitializer