SlideShare ist ein Scribd-Unternehmen logo
1 von 50
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.
?

Weitere ähnliche Inhalte

Was ist angesagt?

Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
vasya10
 
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
🎤 Hanno Embregts 🎸
 

Was ist angesagt? (20)

Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6Angular 2 Migration - JHipster Meetup 6
Angular 2 Migration - JHipster Meetup 6
 
Tech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new frameworkTech Webinar: Angular 2, Introduction to a new framework
Tech Webinar: Angular 2, Introduction to a new framework
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
 
Talk for DevFest 2021 - GDG Bénin
Talk for DevFest 2021 - GDG BéninTalk for DevFest 2021 - GDG Bénin
Talk for DevFest 2021 - GDG Bénin
 
Spring boot
Spring bootSpring boot
Spring boot
 
Angular 2
Angular 2Angular 2
Angular 2
 
Angular 2: What's New?
Angular 2: What's New?Angular 2: What's New?
Angular 2: What's New?
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next Framework
 
Springboot and camel
Springboot and camelSpringboot and camel
Springboot and camel
 
Wuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with GradleWuff: Building Eclipse Applications and Plugins with Gradle
Wuff: Building Eclipse Applications and Plugins with Gradle
 
Angular 2 Essential Training
Angular 2 Essential Training Angular 2 Essential Training
Angular 2 Essential Training
 
Spring boot 3g
Spring boot 3gSpring boot 3g
Spring boot 3g
 
Angular 2: core concepts
Angular 2: core conceptsAngular 2: core concepts
Angular 2: core concepts
 
Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developers
 
Migration from AngularJS to Angular
Migration from AngularJS to AngularMigration from AngularJS to Angular
Migration from AngularJS to Angular
 
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинAzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
 
Angular 2 overview
Angular 2 overviewAngular 2 overview
Angular 2 overview
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 
AngularJS: Service, factory & provider
AngularJS: Service, factory & providerAngularJS: Service, factory & provider
AngularJS: Service, factory & provider
 
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)Building a Spring Boot Application - Ask the Audience!  (from JavaLand 2017)
Building a Spring Boot Application - Ask the Audience! (from JavaLand 2017)
 

Ähnlich wie Angular 2 in-1

What is your money doing?
What is your money doing?What is your money doing?
What is your money doing?
Alfonso Fernández
 

Ähnlich wie Angular 2 in-1 (20)

Commit University - Exploring Angular 2
Commit University - Exploring Angular 2Commit University - Exploring Angular 2
Commit University - Exploring Angular 2
 
mean stack
mean stackmean stack
mean stack
 
Angular js
Angular jsAngular js
Angular js
 
Angular workshop - Full Development Guide
Angular workshop - Full Development GuideAngular workshop - Full Development Guide
Angular workshop - Full Development Guide
 
Angular2 + rxjs
Angular2 + rxjsAngular2 + rxjs
Angular2 + rxjs
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java Developers
 
What is your money doing?
What is your money doing?What is your money doing?
What is your money doing?
 
Meetup SkillValue - Angular 6 : Bien démarrer son application
Meetup SkillValue - Angular 6 : Bien démarrer son applicationMeetup SkillValue - Angular 6 : Bien démarrer son application
Meetup SkillValue - Angular 6 : Bien démarrer son application
 
Angular 9
Angular 9 Angular 9
Angular 9
 
Migrating an Application from Angular 1 to Angular 2
Migrating an Application from Angular 1 to Angular 2 Migrating an Application from Angular 1 to Angular 2
Migrating an Application from Angular 1 to Angular 2
 
Angular IO
Angular IOAngular IO
Angular IO
 
Introduction to Angular2
Introduction to Angular2Introduction to Angular2
Introduction to Angular2
 
introduction to Angularjs basics
introduction to Angularjs basicsintroduction to Angularjs basics
introduction to Angularjs basics
 
Angular 2 - a New Hope
Angular 2 - a New HopeAngular 2 - a New Hope
Angular 2 - a New Hope
 
angularJs Workshop
angularJs WorkshopangularJs Workshop
angularJs Workshop
 
AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014AngularJs Workshop SDP December 28th 2014
AngularJs Workshop SDP December 28th 2014
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Workshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte IIWorkshop 13: AngularJS Parte II
Workshop 13: AngularJS Parte II
 
Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2 Migrating an application from Angular 1 to Angular 2
Migrating an application from Angular 1 to Angular 2
 
Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017Bootiful Development with Spring Boot and Angular - Spring I/O 2017
Bootiful Development with Spring Boot and Angular - Spring I/O 2017
 

Mehr von GlobalLogic Ukraine

GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Ukraine
 

Mehr von GlobalLogic Ukraine (20)

GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
GlobalLogic JavaScript Community Webinar #18 “Long Story Short: OSI Model”
 
Штучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptxШтучний інтелект як допомога в навчанні, а не замінник.pptx
Штучний інтелект як допомога в навчанні, а не замінник.pptx
 
Задачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptxЗадачі AI-розробника як застосовується штучний інтелект.pptx
Задачі AI-розробника як застосовується штучний інтелект.pptx
 
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptxЩо треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
Що треба вивчати, щоб стати розробником штучного інтелекту та нейромереж.pptx
 
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
GlobalLogic Java Community Webinar #16 “Zaloni’s Architecture for Data-Driven...
 
JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"JavaScript Community Webinar #14 "Why Is Git Rebase?"
JavaScript Community Webinar #14 "Why Is Git Rebase?"
 
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
GlobalLogic .NET Community Webinar #3 "Exploring Serverless with Azure Functi...
 
Страх і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic EducationСтрах і сила помилок - IT Inside від GlobalLogic Education
Страх і сила помилок - IT Inside від GlobalLogic Education
 
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
GlobalLogic .NET Webinar #2 “Azure RBAC and Managed Identity”
 
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”GlobalLogic QA Webinar “What does it take to become a Test Engineer”
GlobalLogic QA Webinar “What does it take to become a Test Engineer”
 
“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?“How to Secure Your Applications With a Keycloak?
“How to Secure Your Applications With a Keycloak?
 
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
GlobalLogic Machine Learning Webinar “Advanced Statistical Methods for Linear...
 
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
GlobalLogic Machine Learning Webinar “Statistical learning of linear regressi...
 
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
GlobalLogic C++ Webinar “The Minimum Knowledge to Become a C++ Developer”
 
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
Embedded Webinar #17 "Low-level Network Testing in Embedded Devices Development"
 
GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"GlobalLogic Webinar "Introduction to Embedded QA"
GlobalLogic Webinar "Introduction to Embedded QA"
 
C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"C++ Webinar "Why Should You Learn C++ in 2021-22?"
C++ Webinar "Why Should You Learn C++ in 2021-22?"
 
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
GlobalLogic Test Automation Live Testing Session “Android Behind UI — Testing...
 
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
GlobalLogic Test Automation Online TechTalk “Test Driven Development as a Per...
 
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
GlobalLogic Azure TechTalk ONLINE “Marketing Data Lake in Azure”
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Kürzlich hochgeladen (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

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
  • 15. 15 Guide of Style https://angular.io/guide/styleguide 80 % of its lifetime the code is being read, not written G
  • 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 rostyslav.siryk@globallogic.com ● Let us know if you like to review it and share it with others. ?