SlideShare a Scribd company logo
1
Angular 2 in 1. Theory & Practice
Rostyslav Siryk
Senior Software Engineer
18.12.2017
2
1.Angular Alphabet
Essential elements &
some theory
3
Angular Alphabet Letters
A Angular, AOT, Annotation
B Binding, Barrel, Bootstrap
C Component, CD, CLI
D Dependency Injection, Directive
E Event
F Forms
G Guide of Style
H Hooks
I @Input, IoC, Inject
J Just-in-time compilation
K Karma Testing
L Language Service
M Module
N ngIf, ngFor
O @Output, Observable
P Protractor, Pipes
Q Quick Start, Quality
R Reactive
S Service
T Template
U Unit Testing with
Karma
V @ViewChild
W Workflows
X Angular X
Y Angular Y
@...
$...
#...
[...]
(...)
[(...)]
{{...}}
Core Template
Tokens
4
Angular
A.k.a "Angular 2+" or "Angular 2" is a
TypeScript-based open-source front-end
web application platform led by the
Angular Team at Google and by a
community of individuals and
corporations. Angular is a complete
rewrite from the same team that built
AngularJS.
Current release is Angular 5.
Annotation/Decorator
A
@Input
@Output
@Component
@NgModule
...
decorator
6
Binding
Usually refers to data binding and the act
of binding an HTML object property to a
data object property.
Barrel
A way to roll up exports from several
ES2015 modules into a single convenient
ES2015 module. The barrel itself is an
ES2015 module file that re-exports
B
7
Component
An Angular class responsible for exposing
data to a view and handling most of the
view’s display and user-interaction logic.
Change Detection
”The basic task of change detection is to
take the internal state of a program and
make it visible to UI” — thoughtram.
C
8
DI
A design pattern and mechanism for
creating and delivering parts of an
application to other parts of an
application that request them.
Directive
An Angular class responsible for
creating, reshaping, and interacting with
HTML elements in the browser DOM.
D
a.k.a.
“property
binding”
<input [name]="username">
bind input
a.k.a.
“event binding”
<input
(change)="onChange($event)">
bind output
<input [(ngModel)]="username">
<p>Hello {{username}}!</p>
bind two-way
12
Events
Event binding & handling example
HTML (Template):
<div (click)="onDivClicked($event)">Click
Me</div>
TS (Component):
onDivClicked(evt) {
console.log('Clicked: ', evt);
E
<button
(click)="clicked($event)">
</button>
pass event
14
Forms
Template-driven forms (async)
Vs.
Reactive forms (sync)
F
15
Guide of Style
https://angular.io/guide/styleguide
80 %
of its lifetime the code is being read, not
written
G
16
Hooks of Lifecycle
Angular offers lifecycle hooks that provide visibility into these key life moments and the
ability to act when they occur. Angular creates it, renders it, creates and renders its
children, checks it when its data-bound properties change, and destroys it before
removing it from the DOM. https://angular.io/guide/lifecycle-hooks
H
17
Input
A directive property that can be the
target of a property binding. Data values
flow into this property from the data
source identified in the template
expression to the right of the equal sign.
Inject
An object in the Angular dependency-
injection system that can find a named
I
{{i}}
interpolation
<ul>
<li *ngFor="let id of ids">
{{ id }}
</li>
</ul>
1. // Interpolation examples
2. import { Component, Input } from '@angular/core';
3. import { Hero } from './hero';
4.
5. @Component({
6. selector: 'app-hero-child',
7. template: `<h3>{{hero.name}} says:</h3>
8. <p>I, {{hero.name}}, am at your service, {{masterName}}.</p>`
9. })
10. export class HeroChildComponent {
11. @Input() hero: Hero;
12. @Input('master') masterName: string;
13. }
I
20
Just-in-time (JIT) compilation
A bootstrapping method of compiling
components and modules in the browser
and launching the application
dynamically. Just-in-time mode is a
good choice during development.
Consider using the ahead-of-time mode
for production apps.
JIT vs AOT
https://blog.nrwl.io/angular-is-aot-worth-
J
21
Karma Test Runner
Ideal for writing and running unit tests
while developing the application. It can
be an integral part of the project's
development and continuous integration
processes
Run it like this:
K
22
Language Service
The Angular Language Service is a way
to get completions, errors, hints, and
navigation inside your Angular templates
whether they are external in an HTML file
or embedded in annotations/decorators
in a string. The Angular Language
Service autodetects that you are opening
an Angular file, reads your tsconfig.json
file, finds all the templates you have in
L
23
Module
A cohesive block of code dedicated to a
single purpose.
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent
],
imports: [
BrowserModule
],
providers: [],
bootstrap: [AppComponent]
M
24
ngModule
Helps you organize an application into
cohesive blocks of functionality. An
NgModule identifies the components,
directives, and pipes that the application
uses along with the list of external
NgModules that the application needs,
such as FormsModule.
ngClass
N
25
Output
A directive property that can be the target of event
binding
Typescript:
@Output() change = new EventEmitter<any>();
HTML:
<input (change)="onChange($event)">
O
26
Pipe
It is a function that transforms input values to output
values for display in a view. Here's an example that
uses the built-in currency pipe to display a numeric
value in the local currency.
Price: {{product.price | currency}}
Provider
Creates a new instance of a dependency for the
dependency injection system. It relates a lookup token
to code—sometimes called a "recipe"—that can create
a dependency value.
P
27
Router
Richly featured mechanism for configuring and
managing the entire view navigation process,
including the creation and destruction of views.
<router-outlet>
Part of HTML template to render router’s output.
Reactive
https://gist.github.com/staltz/868e7e9bc2a7b8c1f75
4
R
28
Service
For data or logic that is not associated with a specific
view to share across components, build services.
Structural Directive
A category of directive that can shape or reshape
HTML layout by adding or removing DOM elements.
*ngIf conditional directive and *ngFor repeater
directive are well-known examples.
Store
https://github.com/ngrx/platform
S
*ngIf
condition
<app-ex *ngIf="exists">
I do exist
</app-ex>
*ngFor
loop
<ul>
<li *ngFor="let id of ids">
{{ id }}
</li>
</ul>
31
Template
A chunk of HTML that Angular uses to
render a view with the support and
guidance of an Angular directive, most
notably a component.
Good article on Template Syntax.
Transpiling
A specific kind of compiling.
Typescript
Free and open-source programming
T
A reference to a DOM element or directive
within a template:
<input #box (keyup)="0">
<p>{{box.value}}</p>
template reference
variable
33
Unit Test (with Karma)
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { HomeComponent } from './home.component';
describe('HomeComponent', () => {
let component: HomeComponent;
let fixture: ComponentFixture<HomeComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ HomeComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(HomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
U
34
View
Displays information and responds to user actions like clicks,
mouse moves, keystrokes, etc.
View is rendered under the control of one or more directives,
especially component directives and their companion
templates.
The component is important that much we can usually save it
is a view. Views can contain other views, can be loaded and
unloaded dynamically during navigation through the
application, under the control of a router.
V
35
Workflows
There can be different for your project and you can
benefit from each of them.
W
36
Angular X
Basic Angular course you can participate.
Angular Y
More advanced course on Angular.
XY
37
Zone.js
Encapsulates and intercepts an app asynchronous activity.
DOM and JavaScript have a limited number of asynchronous
activities: DOM events (clicks etc.), promises, XHR calls to
servers.
Zones intercept these activities and give a "zone client" the
possibility to respond to it before and after the async activity
finishes.
Angular runs application in a zone where it respond to
asynchronous events by checking data changes and updating
the display via data bindings. Brian Ford video explains Zones.
Z
38
Angular Core
Template Tokens
@Input
@Output
@Component
@NgModule
...
decorator
a.k.a.
“property binding”
<input [name]="username">
bind input
a.k.a.
“event binding”
<input
(change)="onChange($event)">
bind output
<input [(ngModel)]="username">
<p>Hello {{username}}!</p>
bind two-way
<button
(click)="clicked($event)">
</button>
pass event
A reference to a DOM element or directive
within a template:
<input #box (keyup)="0">
<p>{{box.value}}</p>
template reference
variable
*ngIf
condition
<app-ex *ngIf="exists">
I do exist
</app-ex>
*ngFor
loop
<ul>
<li *ngFor="let id of ids">
{{ id }}
</li>
</ul>
{{i}}
interpolation
<ul>
<li *ngFor="let id of ids">
{{ id }}
</li>
</ul>
48
2. Practice
Implementing simplest data-consuming
example, using Inputs, Outputs,
Services, and Pipes
See the source code here:
https://github.com/rostag/kjs
49
Task: show GitHub’s Users list
https://api.github.com/users
[
{
"login": "defunkt",
"id": 2,
"avatar_url": "https://avatars0.githubusercontent.com/u/2?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/defunkt",
"html_url": "https://github.com/defunkt",
"followers_url": "https://api.github.com/users/defunkt/followers",
"following_url": "https://api.github.com/users/defunkt/following{/other_user}",
"gists_url": "https://api.github.com/users/defunkt/gists{/gist_id}",
"starred_url": "https://api.github.com/users/defunkt/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/defunkt/subscriptions",
"organizations_url": "https://api.github.com/users/defunkt/orgs",
"repos_url": "https://api.github.com/users/defunkt/repos",
"events_url": "https://api.github.com/users/defunkt/events{/privacy}",
"received_events_url": "https://api.github.com/users/defunkt/received_events",
"type": "User",
"site_admin": true
}, ...
50
What’sNext
● Explore Angular Glossary
● Create your own project using CLI Upload it to GitHub
● Send a link to the repo to rostyslav.siryk@globallogic.com
● Let us know if you like to review it and share it with others.
?

More Related Content

What's hot (20)

PPTX
Angular 2 Migration - JHipster Meetup 6
William Marques
 
PDF
Tech Webinar: Angular 2, Introduction to a new framework
Codemotion
 
ODP
Introduction to Angular 2
Knoldus Inc.
 
PPTX
Talk for DevFest 2021 - GDG Bénin
Ezéchiel Amen AGBLA
 
PPTX
Spring boot
sdeeg
 
PPTX
Angular 2
Travis van der Font
 
PDF
Angular 2: What's New?
jbandi
 
PDF
Angular 2 - The Next Framework
Commit University
 
ODP
Springboot and camel
Deepak Kumar
 
PDF
Wuff: Building Eclipse Applications and Plugins with Gradle
Andrey Hihlovsky
 
PDF
Angular 2 Essential Training
Patrick Schroeder
 
PPTX
Spring boot 3g
vasya10
 
PDF
Angular 2: core concepts
Codemotion
 
PDF
Quick introduction to Angular 4 for AngularJS 1.5 developers
Paweł Żurowski
 
PPTX
Migration from AngularJS to Angular
Aleks Zinevych
 
PDF
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
JSC “Arcadia Inc”
 
PDF
Angular 2 overview
Jesse Warden
 
PPTX
Angular1x and Angular 2 for Beginners
Oswald Campesato
 
PPTX
AngularJS: Service, factory & provider
Corley S.r.l.
 
PDF
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
🎤 Hanno Embregts 🎸
 
Angular 2 Migration - JHipster Meetup 6
William Marques
 
Tech Webinar: Angular 2, Introduction to a new framework
Codemotion
 
Introduction to Angular 2
Knoldus Inc.
 
Talk for DevFest 2021 - GDG Bénin
Ezéchiel Amen AGBLA
 
Spring boot
sdeeg
 
Angular 2: What's New?
jbandi
 
Angular 2 - The Next Framework
Commit University
 
Springboot and camel
Deepak Kumar
 
Wuff: Building Eclipse Applications and Plugins with Gradle
Andrey Hihlovsky
 
Angular 2 Essential Training
Patrick Schroeder
 
Spring boot 3g
vasya10
 
Angular 2: core concepts
Codemotion
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Paweł Żurowski
 
Migration from AngularJS to Angular
Aleks Zinevych
 
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
JSC “Arcadia Inc”
 
Angular 2 overview
Jesse Warden
 
Angular1x and Angular 2 for Beginners
Oswald Campesato
 
AngularJS: Service, factory & provider
Corley S.r.l.
 
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
🎤 Hanno Embregts 🎸
 

Similar to Angular 2 in-1 (20)

PDF
Commit University - Exploring Angular 2
Commit University
 
PPTX
mean stack
michaelaaron25322
 
PPTX
Angular js
Behind D Walls
 
PPTX
Angular workshop - Full Development Guide
Nitin Giri
 
PPTX
Angular2 + rxjs
Christoffer Noring
 
PDF
Angular 4 for Java Developers
Yakov Fain
 
PDF
What is your money doing?
Alfonso Fernández
 
PDF
Meetup SkillValue - Angular 6 : Bien démarrer son application
Thibault Even
 
PPTX
Angular 9
Raja Vishnu
 
PPTX
Migrating an Application from Angular 1 to Angular 2
Ross Dederer
 
PPTX
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
PPTX
Angular IO
Jennifer Estrada
 
PPTX
Introduction to Angular2
Ivan Matiishyn
 
PPT
introduction to Angularjs basics
Ravindra K
 
PPTX
Angular 2 - a New Hope
Sami Suo-Heikki
 
PPTX
angularJs Workshop
Ran Wahle
 
PPTX
AngularJs Workshop SDP December 28th 2014
Ran Wahle
 
PDF
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Ontico
 
PDF
Workshop 13: AngularJS Parte II
Visual Engineering
 
PPTX
Migrating an application from Angular 1 to Angular 2
Ross Dederer
 
Commit University - Exploring Angular 2
Commit University
 
mean stack
michaelaaron25322
 
Angular js
Behind D Walls
 
Angular workshop - Full Development Guide
Nitin Giri
 
Angular2 + rxjs
Christoffer Noring
 
Angular 4 for Java Developers
Yakov Fain
 
What is your money doing?
Alfonso Fernández
 
Meetup SkillValue - Angular 6 : Bien démarrer son application
Thibault Even
 
Angular 9
Raja Vishnu
 
Migrating an Application from Angular 1 to Angular 2
Ross Dederer
 
Angular Framework ppt for beginners and advanced
Preetha Ganapathi
 
Angular IO
Jennifer Estrada
 
Introduction to Angular2
Ivan Matiishyn
 
introduction to Angularjs basics
Ravindra K
 
Angular 2 - a New Hope
Sami Suo-Heikki
 
angularJs Workshop
Ran Wahle
 
AngularJs Workshop SDP December 28th 2014
Ran Wahle
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Ontico
 
Workshop 13: AngularJS Parte II
Visual Engineering
 
Migrating an application from Angular 1 to Angular 2
Ross Dederer
 
Ad

More from GlobalLogic Ukraine (20)

PDF
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
GlobalLogic Ukraine
 
PPTX
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
PDF
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Ukraine
 
PDF
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic Ukraine
 
PPTX
Штучний інтелект як допомога в навчанні, а не замінник.pptx
GlobalLogic Ukraine
 
PPTX
Задачі AI-розробника як застосовується штучний інтелект.pptx
GlobalLogic Ukraine
 
PPTX
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
GlobalLogic Ukraine
 
PDF
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Ukraine
 
PDF
JavaScript Community Webinar #14 "Why Is Git Rebase?"
GlobalLogic Ukraine
 
PDF
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic Ukraine
 
PPTX
Страх і сила помилок - IT Inside від GlobalLogic Education
GlobalLogic Ukraine
 
PDF
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic Ukraine
 
PDF
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic Ukraine
 
PDF
“How to Secure Your Applications With a Keycloak?
GlobalLogic Ukraine
 
PDF
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 
PPTX
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Ukraine
 
PDF
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic Ukraine
 
PDF
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
GlobalLogic Ukraine
 
GlobalLogic JavaScript Community Webinar #21 “Інтерв’ю без заспокійливих”
GlobalLogic Ukraine
 
Deadlocks in SQL - Turning Fear Into Understanding (by Sergii Stets)
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #18 “How to Improve Web Application Perfor...
GlobalLogic Ukraine
 
GlobalLogic Embedded Community x ROS Ukraine Webinar "Surgical Robots"
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #17 “SpringJDBC vs JDBC. Is Spring a Hero?”
GlobalLogic Ukraine
 
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic Ukraine
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
GlobalLogic Ukraine
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
GlobalLogic Ukraine
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
GlobalLogic Ukraine
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Ukraine
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
GlobalLogic Ukraine
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic Ukraine
 
Страх і сила помилок - IT Inside від GlobalLogic Education
GlobalLogic Ukraine
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic Ukraine
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic Ukraine
 
“How to Secure Your Applications With a Keycloak?
GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Ukraine
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic Ukraine
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
GlobalLogic Ukraine
 
Ad

Recently uploaded (20)

PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Digital Circuits, important subject in CS
contactparinay1
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
The Rise of AI and IoT in Mobile App Tech.pdf
IMG Global Infotech
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 

Angular 2 in-1

  • 1. 1 Angular 2 in 1. Theory & Practice Rostyslav Siryk Senior Software Engineer 18.12.2017
  • 3. 3 Angular Alphabet Letters A Angular, AOT, Annotation B Binding, Barrel, Bootstrap C Component, CD, CLI D Dependency Injection, Directive E Event F Forms G Guide of Style H Hooks I @Input, IoC, Inject J Just-in-time compilation K Karma Testing L Language Service M Module N ngIf, ngFor O @Output, Observable P Protractor, Pipes Q Quick Start, Quality R Reactive S Service T Template U Unit Testing with Karma V @ViewChild W Workflows X Angular X Y Angular Y @... $... #... [...] (...) [(...)] {{...}} Core Template Tokens
  • 4. 4 Angular A.k.a "Angular 2+" or "Angular 2" is a TypeScript-based open-source front-end web application platform led by the Angular Team at Google and by a community of individuals and corporations. Angular is a complete rewrite from the same team that built AngularJS. Current release is Angular 5. Annotation/Decorator A
  • 6. 6 Binding Usually refers to data binding and the act of binding an HTML object property to a data object property. Barrel A way to roll up exports from several ES2015 modules into a single convenient ES2015 module. The barrel itself is an ES2015 module file that re-exports B
  • 7. 7 Component An Angular class responsible for exposing data to a view and handling most of the view’s display and user-interaction logic. Change Detection ”The basic task of change detection is to take the internal state of a program and make it visible to UI” — thoughtram. C
  • 8. 8 DI A design pattern and mechanism for creating and delivering parts of an application to other parts of an application that request them. Directive An Angular class responsible for creating, reshaping, and interacting with HTML elements in the browser DOM. D
  • 12. 12 Events Event binding & handling example HTML (Template): <div (click)="onDivClicked($event)">Click Me</div> TS (Component): onDivClicked(evt) { console.log('Clicked: ', evt); E
  • 16. 16 Hooks of Lifecycle Angular offers lifecycle hooks that provide visibility into these key life moments and the ability to act when they occur. Angular creates it, renders it, creates and renders its children, checks it when its data-bound properties change, and destroys it before removing it from the DOM. https://angular.io/guide/lifecycle-hooks H
  • 17. 17 Input A directive property that can be the target of a property binding. Data values flow into this property from the data source identified in the template expression to the right of the equal sign. Inject An object in the Angular dependency- injection system that can find a named I
  • 18. {{i}} interpolation <ul> <li *ngFor="let id of ids"> {{ id }} </li> </ul>
  • 19. 1. // Interpolation examples 2. import { Component, Input } from '@angular/core'; 3. import { Hero } from './hero'; 4. 5. @Component({ 6. selector: 'app-hero-child', 7. template: `<h3>{{hero.name}} says:</h3> 8. <p>I, {{hero.name}}, am at your service, {{masterName}}.</p>` 9. }) 10. export class HeroChildComponent { 11. @Input() hero: Hero; 12. @Input('master') masterName: string; 13. } I
  • 20. 20 Just-in-time (JIT) compilation A bootstrapping method of compiling components and modules in the browser and launching the application dynamically. Just-in-time mode is a good choice during development. Consider using the ahead-of-time mode for production apps. JIT vs AOT https://blog.nrwl.io/angular-is-aot-worth- J
  • 21. 21 Karma Test Runner Ideal for writing and running unit tests while developing the application. It can be an integral part of the project's development and continuous integration processes Run it like this: K
  • 22. 22 Language Service The Angular Language Service is a way to get completions, errors, hints, and navigation inside your Angular templates whether they are external in an HTML file or embedded in annotations/decorators in a string. The Angular Language Service autodetects that you are opening an Angular file, reads your tsconfig.json file, finds all the templates you have in L
  • 23. 23 Module A cohesive block of code dedicated to a single purpose. import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { HomeComponent } from './home/home.component'; @NgModule({ declarations: [ AppComponent, HomeComponent ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] M
  • 24. 24 ngModule Helps you organize an application into cohesive blocks of functionality. An NgModule identifies the components, directives, and pipes that the application uses along with the list of external NgModules that the application needs, such as FormsModule. ngClass N
  • 25. 25 Output A directive property that can be the target of event binding Typescript: @Output() change = new EventEmitter<any>(); HTML: <input (change)="onChange($event)"> O
  • 26. 26 Pipe It is a function that transforms input values to output values for display in a view. Here's an example that uses the built-in currency pipe to display a numeric value in the local currency. Price: {{product.price | currency}} Provider Creates a new instance of a dependency for the dependency injection system. It relates a lookup token to code—sometimes called a "recipe"—that can create a dependency value. P
  • 27. 27 Router Richly featured mechanism for configuring and managing the entire view navigation process, including the creation and destruction of views. <router-outlet> Part of HTML template to render router’s output. Reactive https://gist.github.com/staltz/868e7e9bc2a7b8c1f75 4 R
  • 28. 28 Service For data or logic that is not associated with a specific view to share across components, build services. Structural Directive A category of directive that can shape or reshape HTML layout by adding or removing DOM elements. *ngIf conditional directive and *ngFor repeater directive are well-known examples. Store https://github.com/ngrx/platform S
  • 30. *ngFor loop <ul> <li *ngFor="let id of ids"> {{ id }} </li> </ul>
  • 31. 31 Template A chunk of HTML that Angular uses to render a view with the support and guidance of an Angular directive, most notably a component. Good article on Template Syntax. Transpiling A specific kind of compiling. Typescript Free and open-source programming T
  • 32. A reference to a DOM element or directive within a template: <input #box (keyup)="0"> <p>{{box.value}}</p> template reference variable
  • 33. 33 Unit Test (with Karma) import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HomeComponent } from './home.component'; describe('HomeComponent', () => { let component: HomeComponent; let fixture: ComponentFixture<HomeComponent>; beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ HomeComponent ] }) .compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(HomeComponent); component = fixture.componentInstance; fixture.detectChanges(); U
  • 34. 34 View Displays information and responds to user actions like clicks, mouse moves, keystrokes, etc. View is rendered under the control of one or more directives, especially component directives and their companion templates. The component is important that much we can usually save it is a view. Views can contain other views, can be loaded and unloaded dynamically during navigation through the application, under the control of a router. V
  • 35. 35 Workflows There can be different for your project and you can benefit from each of them. W
  • 36. 36 Angular X Basic Angular course you can participate. Angular Y More advanced course on Angular. XY
  • 37. 37 Zone.js Encapsulates and intercepts an app asynchronous activity. DOM and JavaScript have a limited number of asynchronous activities: DOM events (clicks etc.), promises, XHR calls to servers. Zones intercept these activities and give a "zone client" the possibility to respond to it before and after the async activity finishes. Angular runs application in a zone where it respond to asynchronous events by checking data changes and updating the display via data bindings. Brian Ford video explains Zones. Z
  • 44. A reference to a DOM element or directive within a template: <input #box (keyup)="0"> <p>{{box.value}}</p> template reference variable
  • 46. *ngFor loop <ul> <li *ngFor="let id of ids"> {{ id }} </li> </ul>
  • 47. {{i}} interpolation <ul> <li *ngFor="let id of ids"> {{ id }} </li> </ul>
  • 48. 48 2. Practice Implementing simplest data-consuming example, using Inputs, Outputs, Services, and Pipes See the source code here: https://github.com/rostag/kjs
  • 49. 49 Task: show GitHub’s Users list https://api.github.com/users [ { "login": "defunkt", "id": 2, "avatar_url": "https://avatars0.githubusercontent.com/u/2?v=4", "gravatar_id": "", "url": "https://api.github.com/users/defunkt", "html_url": "https://github.com/defunkt", "followers_url": "https://api.github.com/users/defunkt/followers", "following_url": "https://api.github.com/users/defunkt/following{/other_user}", "gists_url": "https://api.github.com/users/defunkt/gists{/gist_id}", "starred_url": "https://api.github.com/users/defunkt/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/defunkt/subscriptions", "organizations_url": "https://api.github.com/users/defunkt/orgs", "repos_url": "https://api.github.com/users/defunkt/repos", "events_url": "https://api.github.com/users/defunkt/events{/privacy}", "received_events_url": "https://api.github.com/users/defunkt/received_events", "type": "User", "site_admin": true }, ...
  • 50. 50 What’sNext ● Explore Angular Glossary ● Create your own project using CLI Upload it to GitHub ● Send a link to the repo to [email protected] ● Let us know if you like to review it and share it with others. ?