Angular - Cheat Sheet
Angular - Cheat Sheet
Cheat Sheet
Bootstrapping
import { platformBrowserDynamic } from
'@angular/platform-browser-dynamic';
NgModules
import { NgModule } from '@angular/core';
@NgModule({ declarations: ..., imports: ..., Defines a module that contains components,
exports: ..., providers: ..., bootstrap: ...}) directives, pipes, and providers.
class MyModule {}
declarations:
: [MyRedComponent, MyBlueComponent, List of components, directives, and pipes that belong
MyDatePipe] to this module.
imports:
: [BrowserModule, SomeOtherModule] List of modules to import into this module. Everything
from the imported modules is available to
declarations of this module.
exports:
: [MyRedComponent, MyDatePipe] List of components, directives, and pipes visible to
modules that import this module.
providers: [MyService, { provide: ... }] List of dependency injection providers visible both to
the contents of this module and to importers of this
module.
bootstrap:
: [MyAppComponent] List of components to bootstrap when this module is
bootstrapped.
Template syntax
<input [value]
[value]="firstName"> Binds property value to the result of expression
firstName .
<div [attr.role]
[attr.role]="myAriaRole"> Binds attribute role to the result of expression
myAriaRole .
<div [class.extra-sparkle]
[class.extra-sparkle]="isDelightful"> Binds the presence of the CSS class extra-sparkle
on the element to the truthiness of the expression
isDelightful .
<div [style.width.px]
[style.width.px]="mySize"> Binds style property width to the result of
expression mySize in pixels. Units are optional.
<button (click)
(click)="readRainbow($event)"> Calls method readRainbow when a click event is
triggered on this button element (or its children) and
passes in the event object.
<p>Hello {{ponyName}}
{{ponyName}}</p> Binds text content to an interpolated string, for
example, "Hello Seabiscuit".
<my-cmp [(title)]
[(title)]="name"> Sets up two-way data binding. Equivalent to: <my-cmp
[title]="name" (titleChange)="name=$event">
<p *myUnless
*myUnless="myExpression">...</p> The * symbol turns the current element into an
embedded template. Equivalent to: <ng-template
[myUnless]="myExpression"><p>...</p></ng-
template>
myCardNumberFormatter .
<p>Employer: {{employer?.companyName}}
{{employer?.companyName}}</p> The safe navigation operator ( ? ) means that the
employer field is optional and if undefined , the
<svg:
svg:rect x="0" y="0" width="100" height="100"/> An SVG snippet template needs an svg: prefix on
its root element to disambiguate the SVG element
from an HTML component.
<svg
svg> An <svg> root element is detected as an SVG
<rect x="0" y="0" width="100" height="100"/> element automatically, without the prefix.
</svg
svg>
Built-in directives
import { CommonModule } from
'@angular/common';
<section *ngIf
*ngIf="showSection"> Removes or recreates a portion of the DOM tree
based on the showSection expression.
<li *ngFor
*ngFor="let item of list"> Turns the li element and its contents into a template,
and uses that to instantiate a view for each item in
list.
<div [ngSwitch]
]="conditionExpression"> Conditionally swaps the contents of the div by
<ng-template [ngSwitchCase]
]="case1Exp">...</ng- selecting one of the embedded templates based on
template> the current value of conditionExpression .
<ng-template
ngSwitchCase="case2LiteralString">...</ng-
ngSwitchCase
template>
<ng-template ngSwitchDefault
ngSwitchDefault>...</ng-template>
</div>
<div [ngClass]
[ngClass]="{'active': isActive, 'disabled': Binds the presence of CSS classes on the element to
isDisabled}"> the truthiness of the associated map values. The
right-hand expression should return {class-name:
true/false} map.
<div [ngStyle]
[ngStyle]="{'property': 'value'}"> Allows you to assign styles to an HTML element
<div [ngStyle]
[ngStyle]="dynamicStyles()"> using CSS. You can use CSS directly, as in the first
example, or you can call a method from the
component.
Forms
import { FormsModule } from '@angular/forms';
<input [(ngModel)]
[(ngModel)]="userName"> Provides two-way data-binding, parsing, and
validation for form controls.
Class decorators
import { Directive, ... } from
'@angular/core';
@Component({...})
({...}) Declares that a class is a component and provides
class MyComponent() {} metadata about the component.
@Directive({...})
({...}) Declares that a class is a directive and provides
class MyDirective() {} metadata about the directive.
@Pipe({...})
({...}) Declares that a class is a pipe and provides metadata
class MyPipe() {} about the pipe.
@Injectable()
() Declares that a class has dependencies that should
class MyService() {} be injected into the constructor when the dependency
injector is creating an instance of this class.
Directive configuration
@Directive({ property1: value1, ... })
providers: [MyService, { provide: ... }] List of dependency injection providers for this
directive and its children.
Component configuration
@Component extends @Directive , so the
well
moduleId:
: module.id If set, the templateUrl and styleUrl are resolved
relative to the component.
viewProviders:
: [MyService, { provide: ... }] List of dependency injection providers scoped to this
component's view.
template:
: 'Hello {{name}}' Inline template or external template URL of the
templateUrl: 'my-component.html' component's view.
styles: ['.primary {color: red}'] List of inline CSS styles or external stylesheet URLs
styleUrls: ['my-component.css'] for styling the component’s view.
Class field decorators for directives and
import { Input, ... } from '@angular/core';
components
@Input()
() myProperty; Declares an input property that you can update via
property binding (example: <my-cmp
[myProperty]="someExpression"> ).
@Output()
() myEvent = new EventEmitter(); Declares an output property that fires events that you
can subscribe to with an event binding (example:
<my-cmp (myEvent)="doSomething()"> ).
@HostBinding('class.valid')
('class.valid') isValid; Binds a host element property (here, the CSS class
valid ) to a directive/component property
( isValid ).
@HostListener('click',
('click', ['$event']) onClick(e) Subscribes to a host element event ( click ) with a
{...} directive/component method ( onClick ), optionally
passing an argument ( $event ).
@ContentChild(myPredicate)
(myPredicate) myChildComponent; Binds the first result of the component content query
( myPredicate ) to a property ( myChildComponent ) of
the class.
@ContentChildren(myPredicate)
(myPredicate) Binds the results of the component content query
myChildComponents; ( myPredicate ) to a property ( myChildComponents )
of the class.
@ViewChild(myPredicate)
(myPredicate) myChildComponent; Binds the first result of the component view query
( myPredicate ) to a property ( myChildComponent ) of
the class. Not available for directives.
@ViewChildren(myPredicate)
(myPredicate) myChildComponents; Binds the results of the component view query
( myPredicate ) to a property ( myChildComponents )
of the class. Not available for directives.
Directive and component change detection
(implemented as class methods)
and lifecycle hooks
constructor(myService: MyService, ...) { ... } Called before any other lifecycle hook. Use it to inject
dependencies, but avoid any serious work here.
{ provide
provide: MyService, useClass
useClass: MyMockService } Sets or overrides the provider for MyService to the
MyMockService class.
{ provide
provide: MyService, useFactory
useFactory: myFactory } Sets or overrides the provider for MyService to the
myFactory factory function.
{ provide
provide: MyValue, useValue
useValue: 41 } Sets or overrides the provider for MyValue to the
value 41 .
Routing and navigation
import { Routes, RouterModule, ... } from
'@angular/router';
const routes: Routes = [ Configures routes for the application. Supports static,
{ path: '', component: HomeComponent }, parameterized, redirect, and wildcard routes. Also
{ path: 'path/:routeParam', component: supports custom route data and resolve.
MyComponent },
'Custom' } }
]);
<a [routerLink]
[routerLink]="[ '/path' ]" fragment="anchor">
<a [routerLink]="[ '/path' ]" The provided classes are added to the element when
routerLinkActive="active"> the routerLink becomes the current active route.
class CanActivateGuard implements CanActivate { An interface for defining a class that the router should
canActivate( call first to determine if it should activate this
route: ActivatedRouteSnapshot, component. Should return a boolean or an
state: RouterStateSnapshot Observable/Promise that resolves to a boolean.
): Observable<boolean>|Promise<boolean>|boolean {
... }
): Observable<boolean>|Promise<boolean>|boolean {
... }
class CanActivateChildGuard implements An interface for defining a class that the router should
CanActivateChild { call first to determine if it should activate the child
canActivateChild( route. Should return a boolean or an
route: ActivatedRouteSnapshot, Observable/Promise that resolves to a boolean.
state: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean {
... }
[CanActivateGuard],
children: ... }
class ResolveGuard implements Resolve<T> { An interface for defining a class that the router should
resolve( call first to resolve route data before rendering the
route: ActivatedRouteSnapshot, route. Should return a value or an
state: RouterStateSnapshot Observable/Promise that resolves to a value.
): Observable<any>|Promise<any>|any { ... }
class CanLoadGuard implements CanLoad { An interface for defining a class that the router should
canLoad( call first to check if the lazy loaded module should be
route: Route loaded. Should return a boolean or an
): Observable<boolean>|Promise<boolean>|boolean { Observable/Promise that resolves to a boolean.
... }
loadChildren: ... }