0% found this document useful (0 votes)
620 views10 pages

Angular - Cheat Sheet

This document provides summaries of key Angular concepts: 1. It describes NgModules, components, directives, pipes and how they are configured with metadata decorators. 2. It explains core directives like NgIf, NgFor and NgSwitch and how to bind to component properties and handle events. 3. It shows how to use forms with NgModel and add styles with NgStyle. 4. It provides examples of template syntax for property, event, style bindings and built-in directives.

Uploaded by

maxzoel
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
620 views10 pages

Angular - Cheat Sheet

This document provides summaries of key Angular concepts: 1. It describes NgModules, components, directives, pipes and how they are configured with metadata decorators. 2. It explains core directives like NgIf, NgFor and NgSwitch and how to bind to component properties and handle events. 3. It shows how to use forms with NgModel and add styles with NgStyle. 4. It provides examples of template syntax for property, event, style bindings and built-in directives.

Uploaded by

maxzoel
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 10

Cheat Sheet

Bootstrapping
import { platformBrowserDynamic } from

'@angular/platform-browser-dynamic';

().bootstrapModule(AppModule Bootstraps the app, using the root component from


platformBrowserDynamic().bootstrapModule

the specified NgModule .

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.

entryComponents: [SomeComponent, OtherComponent] List of components not referenced in any reachable


template, for example dynamically created from code.

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.

<div title="Hello {{ponyName}}


{{ponyName}}"> Binds a property to an interpolated string, for
example, "Hello Seabiscuit". Equivalent to: <div
[title]="'Hello ' + ponyName">

<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">

<video #movieplayer ...> Creates a local variable movieplayer that provides


<button (click)
(click)="movieplayer.play()"> access to the video element instance in data-
</video> binding and event-binding expressions in the current
template.

<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>

<p>Card No.: {{cardNumber | Transforms the current value of expression


myCardNumberFormatter}}</p>
myCardNumberFormatter}} cardNumber via the pipe called

myCardNumberFormatter .
<p>Employer: {{employer?.companyName}}
{{employer?.companyName}}</p> The safe navigation operator ( ? ) means that the
employer field is optional and if undefined , the

rest of the expression should be ignored.

<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, ... })

selector: '.cool-button:not(a)' Specifies a CSS selector that identifies this directive


within a template. Supported selectors include
element , [attribute] , .class , and :not() .

Does not support parent-child relationship selectors.

providers: [MyService, { provide: ... }] List of dependency injection providers for this
directive and its children.
Component configuration
@Component extends @Directive , so the

@Directive configuration applies to components as

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.

ngOnChanges(changeRecord) { ... } Called after every change to input properties and


before processing content or child views.

ngOnInit() { ... } Called after the constructor, initializing input


properties, and the first call to ngOnChanges .

ngDoCheck() { ... } Called every time that the input properties of a


component or a directive are checked. Use it to
extend change detection by performing a custom
check.

ngAfterContentInit() { ... } Called after ngOnInit when the component's or


directive's content has been initialized.

ngAfterContentChecked() { ... } Called after every check of the component's or


directive's content.

ngAfterViewInit() { ... } Called after ngAfterContentInit when the


component's views and child views / the view that a
directive is in has been initialized.

ngAfterViewChecked() { ... } Called after every check of the component's views


and child views / the view that a directive is in.

ngOnDestroy() { ... } Called once, before the instance is destroyed.


Dependency injection configuration

{ 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 },

{ path: 'staticPath', component: ... },

{ path: '**', component: ... },

{ path: 'oldPath', redirectTo: '/staticPath' },

{ path: ..., component: ..., data: { message:

'Custom' } }

]);

const routing = RouterModule.forRoot(routes);

Marks the location to load the component of the


<router-outlet></router-outlet> active route.
<router-outlet name="aux"></router-outlet
router-outlet>

Creates a link to a different view based on a route


<a routerLink="/path"> instruction consisting of a route path, required and
<a [routerLink]
]="[ '/path', routeParam ]"> optional parameters, query parameters, and a
<a [routerLink]
[routerLink]="[ '/path', { matrixParam: fragment. To navigate to a root route, use the /
'value' } ]"> prefix; for a child route, use the ./ prefix; for a
<a [routerLink]
[routerLink]="[ '/path' ]" [queryParams]="{ sibling or parent, use the ../ prefix.
page: 1 }">

<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 {

... }

{ path: ..., canActivate: [CanActivate


CanActivateGuard] }
class CanDeactivateGuard implements An interface for defining a class that the router should
CanDeactivate<T> { call first to determine if it should deactivate this
canDeactivate( component after a navigation. Should return a
component: T, boolean or an Observable/Promise that resolves to a
route: ActivatedRouteSnapshot, boolean.
state: RouterStateSnapshot

): Observable<boolean>|Promise<boolean>|boolean {

... }

{ path: ..., canDeactivate: [CanDeactivate


CanDeactivateGuard]

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 {

... }

{ path: ..., canActivateChild:

[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 { ... }

{ path: ..., resolve: [Resolve


ResolveGuard] }

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.
... }

{ path: ..., canLoad: [CanLoad


CanLoadGuard],

loadChildren: ... }

You might also like