SlideShare a Scribd company logo
Angular 2:What’s new?
Jonas Bandi, IvoryCode GmbH
Once upon a time …
… the world was peacefully creating applications
with AngularJS …
…but change was lurking in the maze of a mailing list …
https://groups.google.com/forum/#!search/misko$20Hevery$20may$2022$202013/polymer-dev/4RSYaKmbtEk/uYnY3900wpIJ
… then the threat became real …
ng-europe, October 2014
https://www.youtube.com/watch?v=gNmWybAyBHI
https://twitter.com/kevindente/status/527500820603232257
Angular 2: What's New?
Forget anything you know about AngularJS?
About me …
Jonas Bandi

jonas.bandi@ivorycode.com
Twitter: @jbandi
- Freelancer: www.ivorycode.com
- Dozent an der Berner Fachhochschule seit 2007
- Trainer bei Digicomp für AngularJS und Angular 2
- In-House Kurse & Coachings für Web-Technologien im Enterprise (UBS,
Postfinance, Mobiliar, BIT, SBB ... )
AngularJS is a powerful Framework …
… but it is old!
1995
2006
2009
2011
2013 20162012
AngularJS
Bootstrap
LoDash React Angular 2
https://en.wikipedia.org/wiki/Usage_share_of_web_browsers
The web has changed since 2009…
2015
Angular 2 is a new implementation of the
concepts behind AngularJS …
… for the modern web.
… but Angular 2 is not an update to AngularJS.
Angular 2 is built upon the
modern web:
2015
- web workers
- shadow dom
Angular 2 is built for the
modern web:
• mobile browsers
• modern browsers
• server-side rendering
Angular 2 improves over AngularJS:
• faster
• easier to use & learn
• built on proven best practices (i.e. ui-
components, unidirectional data flow …)
The core concepts of Angular 2 are clean and
easy to learn …
Angular 2: What's New?
Angular Key Concepts
controllers components
data-binding data-binding / data-flow
directives directives
services
dependency injection
services
dependency injection
components (ng 1.5) components
AngularJS Angular 2
Angular Key Concepts
controllers
components
components (ng 1.5)
AngularJS Angular 2
ES2015 class
JavaScript Function
DDO
ToDo-App Component
New-ToDo Component
ToDo-List Component
Angular 2 Components
Template Class Metadata
+ +
= Component
@Component
Components are the main building-block of Angular 2.
A Simple Component
import	{Component}	from	'@angular/core';	
@Component({	
				selector:	'my-app',	
				template:	'<h1>My	First	Angular	2	App</h1>'	
})	
export	class	AppComponent	{	}
var app = angular.module('todoApp');

app.controller('todoController',
ToDoController);



ToDoController.$inject = ['ToDoService'];

function ToDoController(todoService) {

var ctrl = this;



ctrl.newToDo = new ToDoItem();

ctrl.todos = todoService.getToDos();

...
@Component({

selector: 'td-todo-app',

template: require('./app.component.html'),

directives: [NewTodo, ToDoList],

providers: [ToDoService]

})

export class TodoApp implements OnInit {



todos: Array<ToDo> = [];



constructor(private todoService:ToDoService){}



ngOnInit() {

this.todos = this.todoService.loadToDos();

}
...
AngularJS Angular 2
Controller -> Component
var app = angular.module('todoApp');



app.component('TodoApp', {

templateUrl: 'todo-app.html',

controller: TodoAppComponent

});



ToDoController.$inject = ['ToDoService'];

function TodoAppComponent(todoService) {

var ctrl = this;



ctrl.newToDo = new ToDoItem();

ctrl.todos = todoService.getToDos();



...
@Component({

selector: 'td-todo-app',

template: require('./app.component.html'),

directives: [NewTodo, ToDoList],

providers: [ToDoService]

})

export class TodoApp implements OnInit {



todos: Array<ToDo> = [];



constructor(private todoService:ToDoService){}



ngOnInit() {

this.todos = this.todoService.loadToDos();

}
...
AngularJS Angular 2
Component(ng 1.5) -> Component
Directives & Components
A directive is a construct, that is embedded into html and has
a special meaning for the framework.
Directives
Components Structural

Directives
Attribute

Directives
Component Directive
is a
composes
Angular Key Concepts
directives directives
AngularJS Angular 2
many directives
from ng1 are not
needed in ng2
templates
a lot of directives 

(i.e	ng-click,	ng-focus,	
ng-blur,	ng-keyup	…)
AngularJS vs.Angular 2: Directives
The generic binding capabilities of Angular 2 makes many directives from AngularJS obsolete.
https://docs.angularjs.org/api/ng/directive https://angular.io/docs/ts/latest/api/
<div	ng-style={color:'red'}>	
<img	ng-src="{{ctrl.path}}">	
<a	ng-href=“{{ctrl.link}}">
<div	[style.color]="color">	
<img	[src]="path">	
<a	[href]="link">
ng-click="savePerson(person)"	
ng-focus="updateSummary()"	
ng-blur="commit()"	
ng-keyup="updateCalculation()"
(click)="savePerson(person)"	
(focus)="updateSummary()"	
(blur)="commit()"	
(keyup)="updateCalculation()"
AngularJS Angular 2
Structural Directives
Use html as a template
<ul class="todo-list" >

<li ng-repeat="todo in ctrl.todos">

{{todo.title}}

<button class="remove-button"
ng-click="ctrl.removeToDo(todo)">

x

</button>

</li>

</ul>
<ul class="todo-list" >

<li *ngFor="let todo of todos">

{{todo.title}}

<button class="remove-button"
(click)="removeToDo(todo)">

x

</button>

</li>

</ul>

AngularJS Angular 2
ng-repeat,	ng-if *ngFor,	*ngIf
Angular Key Concepts
data-binding data-binding / data-flow
AngularJS Angular 2
interpolation &
2-way databinding
interpolation & 2-way databinding
uni-directional data-flow$scope
generic property & event binding
Databinding
Interpolation
Property Binding
Event Binding
Two Way Binding
{{value}}
[property]="value"
(event)="handler"
[(ngModel)]="value"
DOM
(Template)
component
Nested Components: Uni-Directional Data-Flow
State should be explicitly owned by a component.
• A parent component passes
state to children
• Children should not edit
state of their parent
• Children “notify” parents
(events, actions …)
Child
Component
Child Component
Parent Component
state
properties 

go in
logic
eventscomeout
update
@Input()
@Output()
Angular formalises unidirectional data-flow with @Input() and @Output() properties.
Angular Key Concepts
services services
AngularJS Angular 2
a function registered
as factory, service or
provider
ES2015 class
Services
Objects that perform a specific job.
Instantiated by Angular.
var app = angular.module('todoApp');

app.factory('toDoService', toDoService);



function toDoService() {

'use strict';



return {

getToDos: getToDos,

addToDo: addToDo,

removeToDo: removeToDo

};
...
@Injectable()

export class ToDoService {



loadToDos():Array<ToDo> {

var loadedToDos =
JSON.parse(
localStorage
.getItem(TODOS_KEY)
);

return loadedToDos || [];

}

...
AngularJS Angular 2
Angular Key Concepts
dependency injection dependency injection
AngularJS Angular 2
DI based on naming
DI based on types
(usingTypeScript and
Decorators)
Singletons Hierarchical DI
Dependency Injection
var app = angular.module('todoApp');

app.factory('toDoService', toDoService);



function toDoService() {
...
}
@Injectable()

export class ToDoService {

...
}
AngularJS Angular 2
@Component({

selector: 'td-todo-app',

template: require('./app.component.html'),

directives: [NewTodo, ToDoList],

providers: [ToDoService]

})

export class TodoApp implements OnInit {

constructor(private todoService:ToDoService){}
...
}
app.controller('todoController',
ToDoController);



ToDoController.$inject = ['toDoService'];

function ToDoController(todoService) {
...
}
registration:
injection:
Angular Key Concepts
controllers components
data-binding data-binding / data-flow
directives directives
services
dependency injection
services
dependency injection
components (ng 1.5) components
AngularJS Angular 2
Many key concepts remain the same.
But the implementation has changed.
There is more …
filters Pipes
AngularJS Angular 2
http with Promises http with RxJs
(Promises still supported)
Routing
(template centered)
Hierarchical
Component Router
… …
The core concepts of Angular 2 are clean and
easy to learn …
… but setting up a full Angular project can be
quite complicated today.
Angular JS
AngularJS: an effective tool but not elegant …
SystemJS
2015
webpack
jspm
Angular 2
Angular is distributed through NPM
Node Package Manger
To get Angular on your development machine, you have to
install Node.JS.
https://www.npmjs.com/
2015
ES5
Multi-Language
Language Choices
ES5
2015
weakly typed strongly typed
(optional)
no com-

pilation compilation
Angular for ES2015 &TS relies on ES2015 modules.

There is no support for ES2015 modules in browsers today.

A module-system is mandatory.
VS.
SystemJS
To pack or (not) to pack?
Build Toolchain
Typically you need a
front-end build for
transpilation and module
bundling.
Angular 2 aspires to be a platform
progressive web-apps for mobile

(web workers, cache, push, offline)
https://mobile.angular.io/
classic web-apps for
desktops
installed mobile apps
(hybrid)
installed mobile apps
(native integrations)
server side rendering
https://universal.angular.io/
installed desktop apps
https://github.com/NathanWalker/angular2-seed-advanced
dev tooling
https://cli.angular.io/
Is Angular 2 ready for production?
October 2014: Initial announcement of Angular 2
December 2015: Angular 2 released as beta
May 2016: Angular 2 Release Candidate 0
June 2016: Angular 2 Release Candidate 2
What is missing:
- Router (!)
- Offline Compilation & BuildToolchain
- internationalization
- 3rd Party Ecosystem
https://www.reddit.com/r/angularjs/comments/4i2n3k/angular_2_was_never_ready_for_a_release_candidate/
The Router Debacle
http://blog.jonasbandi.net/2016/06/ng2-router.html
- Dez 2014: New Router announced for
Angular 1.4 and Angular 2
- June 2015: New Router is deprecated
- Angular 2 beta is developed with the
Component router
- March 2016: Component Router is
released for Angular 1.5
- May 2016: Component Router is
deprecated. Router 2.0 is part of
Angular 2 RC1
- June 2016: Router 2.0 is deprecated,
Router 3.0 is announced
Jonas Bandi

jonas.bandi@ivorycode.com
Twitter: @jbandi
Tomorrow: DevDay Workshop - Hands On Angular 2
Digicomp Course: Front-End-Entwicklung mit Angular 2, JavaScript und
TypeScript
Questions?

More Related Content

What's hot (20)

PDF
Angular 2 overview
Jesse Warden
 
PDF
Angular 2 - Core Concepts
Fabio Biondi
 
PDF
Angular2 intro
Shawn McKay
 
PPTX
Angular 2
Travis van der Font
 
PDF
Tech Webinar: Angular 2, Introduction to a new framework
Codemotion
 
PPTX
What’s new in angular 2
Ran Wahle
 
PDF
Angular 2 - The Next Framework
Commit University
 
PDF
Adventures with Angular 2
Dragos Ionita
 
PDF
Introduction to Angular 2
Naveen Pete
 
PDF
Introduction to angular 2
Dhyego Fernando
 
PDF
An Intro to Angular 2
Ron Heft
 
PDF
Angular 2: core concepts
Codemotion
 
PDF
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Codemotion
 
PDF
JavaScript - The Universal Platform?
Jonas Bandi
 
PPTX
Talk for DevFest 2021 - GDG Bénin
Ezéchiel Amen AGBLA
 
PDF
Angular2 with TypeScript
Rohit Bishnoi
 
PPTX
Angular 5
Bartłomiej Narożnik
 
PPTX
Introduction to angular 2
Dor Moshe
 
PDF
Introduction to angular 4
Marwane El Azami
 
Angular 2 overview
Jesse Warden
 
Angular 2 - Core Concepts
Fabio Biondi
 
Angular2 intro
Shawn McKay
 
Tech Webinar: Angular 2, Introduction to a new framework
Codemotion
 
What’s new in angular 2
Ran Wahle
 
Angular 2 - The Next Framework
Commit University
 
Adventures with Angular 2
Dragos Ionita
 
Introduction to Angular 2
Naveen Pete
 
Introduction to angular 2
Dhyego Fernando
 
An Intro to Angular 2
Ron Heft
 
Angular 2: core concepts
Codemotion
 
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Codemotion
 
JavaScript - The Universal Platform?
Jonas Bandi
 
Talk for DevFest 2021 - GDG Bénin
Ezéchiel Amen AGBLA
 
Angular2 with TypeScript
Rohit Bishnoi
 
Introduction to angular 2
Dor Moshe
 
Introduction to angular 4
Marwane El Azami
 

Viewers also liked (12)

PDF
Introduction à Angular 2
Vincent Caillierez
 
PPTX
TypeScript and SharePoint
WePlus Consultancy
 
PPTX
Type script
Zunair Shoes
 
PPTX
Angular 2 and TypeScript - 2016 Dump Day
NETMedia
 
PDF
Kann JavaScript elegant sein?
jbandi
 
PDF
Java & JavaScript: Best Friends?
jbandi
 
PPT
TypeScript Presentation
Patrick John Pacaña
 
PPTX
Typescript ppt
akhilsreyas
 
PPTX
Vert.x v3 - high performance polyglot application toolkit
Sages
 
PPTX
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
PPTX
Introduction to Angularjs
Manish Shekhawat
 
PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Introduction à Angular 2
Vincent Caillierez
 
TypeScript and SharePoint
WePlus Consultancy
 
Type script
Zunair Shoes
 
Angular 2 and TypeScript - 2016 Dump Day
NETMedia
 
Kann JavaScript elegant sein?
jbandi
 
Java & JavaScript: Best Friends?
jbandi
 
TypeScript Presentation
Patrick John Pacaña
 
Typescript ppt
akhilsreyas
 
Vert.x v3 - high performance polyglot application toolkit
Sages
 
vert.x - asynchronous event-driven web applications on the JVM
jbandi
 
Introduction to Angularjs
Manish Shekhawat
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Ad

Similar to Angular 2: What's New? (20)

PDF
Angular 2 - How we got here?
Marios Fakiolas
 
PPTX
What's new in Angular 2?
Alfred Jett Grandeza
 
PDF
Angular2 tutorial
HarikaReddy115
 
PPTX
Moving From AngularJS to Angular 2
Exilesoft
 
PPTX
An afternoon with angular 2
Mike Melusky
 
PPTX
An evening with Angular 2
Mike Melusky
 
PPTX
Angular2v2
Yoeri Van Damme
 
PPT
Angular.ppt
Mytrux1
 
PPTX
PPT on Angular 2 Development Tutorial
Paddy Lock
 
PPTX
Introduction to Angular js 2.0
Nagaraju Sangam
 
PPTX
Angular 2.0
Mallikarjuna G D
 
PPTX
Angular js 2.0
ccmchandrakanth5
 
PPTX
Angular js 2.0 beta
Nagaraju Sangam
 
PPTX
Angular 2 with typescript
Tayseer_Emam
 
PPTX
Angular TS(typescript)
Ivan Stepić
 
PPTX
Intro to AngularJs
SolTech, Inc.
 
PPTX
AngularJS2 / TypeScript / CLI
Domenico Rutigliano
 
PPTX
Angular 2
Nigam Goyal
 
PPTX
Reason to choose Angular JS for your Web Application
Priyanka Verma
 
PPTX
Angular interview questions
Goa App
 
Angular 2 - How we got here?
Marios Fakiolas
 
What's new in Angular 2?
Alfred Jett Grandeza
 
Angular2 tutorial
HarikaReddy115
 
Moving From AngularJS to Angular 2
Exilesoft
 
An afternoon with angular 2
Mike Melusky
 
An evening with Angular 2
Mike Melusky
 
Angular2v2
Yoeri Van Damme
 
Angular.ppt
Mytrux1
 
PPT on Angular 2 Development Tutorial
Paddy Lock
 
Introduction to Angular js 2.0
Nagaraju Sangam
 
Angular 2.0
Mallikarjuna G D
 
Angular js 2.0
ccmchandrakanth5
 
Angular js 2.0 beta
Nagaraju Sangam
 
Angular 2 with typescript
Tayseer_Emam
 
Angular TS(typescript)
Ivan Stepić
 
Intro to AngularJs
SolTech, Inc.
 
AngularJS2 / TypeScript / CLI
Domenico Rutigliano
 
Angular 2
Nigam Goyal
 
Reason to choose Angular JS for your Web Application
Priyanka Verma
 
Angular interview questions
Goa App
 
Ad

More from jbandi (9)

PDF
From User Action to Framework Reaction
jbandi
 
PDF
From User Action to Framework Reaction
jbandi
 
PDF
The curious Life of JavaScript - Talk at SI-SE 2015
jbandi
 
PDF
There is something about JavaScript - Choose Forum 2014
jbandi
 
PDF
Professional JavaScript Development (An Introduction for Java Developers)
jbandi
 
PDF
NDC 2011 - Building .NET Applications with BDD
jbandi
 
PDF
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
jbandi
 
PPTX
Testing Heute: ein Relikt aus dem Zeitalter des goldenen Wasserfalls?
jbandi
 
PDF
Testing: Chances and Challenges in an agile World
jbandi
 
From User Action to Framework Reaction
jbandi
 
From User Action to Framework Reaction
jbandi
 
The curious Life of JavaScript - Talk at SI-SE 2015
jbandi
 
There is something about JavaScript - Choose Forum 2014
jbandi
 
Professional JavaScript Development (An Introduction for Java Developers)
jbandi
 
NDC 2011 - Building .NET Applications with BDD
jbandi
 
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
jbandi
 
Testing Heute: ein Relikt aus dem Zeitalter des goldenen Wasserfalls?
jbandi
 
Testing: Chances and Challenges in an agile World
jbandi
 

Recently uploaded (20)

PDF
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PDF
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
PPTX
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Efficient, Automated Claims Processing Software for Insurers
Insurance Tech Services
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Powering GIS with FME and VertiGIS - Peak of Data & AI 2025
Safe Software
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Salesforce CRM Services.VALiNTRY360
VALiNTRY360
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
3uTools Full Crack Free Version Download [Latest] 2025
muhammadgurbazkhan
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 

Angular 2: What's New?

  • 1. Angular 2:What’s new? Jonas Bandi, IvoryCode GmbH
  • 2. Once upon a time …
  • 3. … the world was peacefully creating applications with AngularJS …
  • 4. …but change was lurking in the maze of a mailing list … https://groups.google.com/forum/#!search/misko$20Hevery$20may$2022$202013/polymer-dev/4RSYaKmbtEk/uYnY3900wpIJ
  • 5. … then the threat became real … ng-europe, October 2014 https://www.youtube.com/watch?v=gNmWybAyBHI
  • 8. Forget anything you know about AngularJS?
  • 9. About me … Jonas Bandi
 [email protected] Twitter: @jbandi - Freelancer: www.ivorycode.com - Dozent an der Berner Fachhochschule seit 2007 - Trainer bei Digicomp für AngularJS und Angular 2 - In-House Kurse & Coachings für Web-Technologien im Enterprise (UBS, Postfinance, Mobiliar, BIT, SBB ... )
  • 10. AngularJS is a powerful Framework … … but it is old!
  • 13. The web has changed since 2009… 2015
  • 14. Angular 2 is a new implementation of the concepts behind AngularJS … … for the modern web. … but Angular 2 is not an update to AngularJS.
  • 15. Angular 2 is built upon the modern web: 2015 - web workers - shadow dom Angular 2 is built for the modern web: • mobile browsers • modern browsers • server-side rendering Angular 2 improves over AngularJS: • faster • easier to use & learn • built on proven best practices (i.e. ui- components, unidirectional data flow …)
  • 16. The core concepts of Angular 2 are clean and easy to learn …
  • 18. Angular Key Concepts controllers components data-binding data-binding / data-flow directives directives services dependency injection services dependency injection components (ng 1.5) components AngularJS Angular 2
  • 19. Angular Key Concepts controllers components components (ng 1.5) AngularJS Angular 2 ES2015 class JavaScript Function DDO
  • 21. Angular 2 Components Template Class Metadata + + = Component @Component Components are the main building-block of Angular 2.
  • 23. var app = angular.module('todoApp');
 app.controller('todoController', ToDoController);
 
 ToDoController.$inject = ['ToDoService'];
 function ToDoController(todoService) {
 var ctrl = this;
 
 ctrl.newToDo = new ToDoItem();
 ctrl.todos = todoService.getToDos();
 ... @Component({
 selector: 'td-todo-app',
 template: require('./app.component.html'),
 directives: [NewTodo, ToDoList],
 providers: [ToDoService]
 })
 export class TodoApp implements OnInit {
 
 todos: Array<ToDo> = [];
 
 constructor(private todoService:ToDoService){}
 
 ngOnInit() {
 this.todos = this.todoService.loadToDos();
 } ... AngularJS Angular 2 Controller -> Component
  • 24. var app = angular.module('todoApp');
 
 app.component('TodoApp', {
 templateUrl: 'todo-app.html',
 controller: TodoAppComponent
 });
 
 ToDoController.$inject = ['ToDoService'];
 function TodoAppComponent(todoService) {
 var ctrl = this;
 
 ctrl.newToDo = new ToDoItem();
 ctrl.todos = todoService.getToDos();
 
 ... @Component({
 selector: 'td-todo-app',
 template: require('./app.component.html'),
 directives: [NewTodo, ToDoList],
 providers: [ToDoService]
 })
 export class TodoApp implements OnInit {
 
 todos: Array<ToDo> = [];
 
 constructor(private todoService:ToDoService){}
 
 ngOnInit() {
 this.todos = this.todoService.loadToDos();
 } ... AngularJS Angular 2 Component(ng 1.5) -> Component
  • 25. Directives & Components A directive is a construct, that is embedded into html and has a special meaning for the framework. Directives Components Structural
 Directives Attribute
 Directives Component Directive is a composes
  • 26. Angular Key Concepts directives directives AngularJS Angular 2 many directives from ng1 are not needed in ng2 templates a lot of directives 
 (i.e ng-click, ng-focus, ng-blur, ng-keyup …)
  • 27. AngularJS vs.Angular 2: Directives The generic binding capabilities of Angular 2 makes many directives from AngularJS obsolete. https://docs.angularjs.org/api/ng/directive https://angular.io/docs/ts/latest/api/ <div ng-style={color:'red'}> <img ng-src="{{ctrl.path}}"> <a ng-href=“{{ctrl.link}}"> <div [style.color]="color"> <img [src]="path"> <a [href]="link"> ng-click="savePerson(person)" ng-focus="updateSummary()" ng-blur="commit()" ng-keyup="updateCalculation()" (click)="savePerson(person)" (focus)="updateSummary()" (blur)="commit()" (keyup)="updateCalculation()" AngularJS Angular 2
  • 28. Structural Directives Use html as a template <ul class="todo-list" >
 <li ng-repeat="todo in ctrl.todos">
 {{todo.title}}
 <button class="remove-button" ng-click="ctrl.removeToDo(todo)">
 x
 </button>
 </li>
 </ul> <ul class="todo-list" >
 <li *ngFor="let todo of todos">
 {{todo.title}}
 <button class="remove-button" (click)="removeToDo(todo)">
 x
 </button>
 </li>
 </ul>
 AngularJS Angular 2 ng-repeat, ng-if *ngFor, *ngIf
  • 29. Angular Key Concepts data-binding data-binding / data-flow AngularJS Angular 2 interpolation & 2-way databinding interpolation & 2-way databinding uni-directional data-flow$scope generic property & event binding
  • 30. Databinding Interpolation Property Binding Event Binding Two Way Binding {{value}} [property]="value" (event)="handler" [(ngModel)]="value" DOM (Template) component
  • 31. Nested Components: Uni-Directional Data-Flow State should be explicitly owned by a component. • A parent component passes state to children • Children should not edit state of their parent • Children “notify” parents (events, actions …) Child Component Child Component Parent Component state properties 
 go in logic eventscomeout update @Input() @Output() Angular formalises unidirectional data-flow with @Input() and @Output() properties.
  • 32. Angular Key Concepts services services AngularJS Angular 2 a function registered as factory, service or provider ES2015 class
  • 33. Services Objects that perform a specific job. Instantiated by Angular. var app = angular.module('todoApp');
 app.factory('toDoService', toDoService);
 
 function toDoService() {
 'use strict';
 
 return {
 getToDos: getToDos,
 addToDo: addToDo,
 removeToDo: removeToDo
 }; ... @Injectable()
 export class ToDoService {
 
 loadToDos():Array<ToDo> {
 var loadedToDos = JSON.parse( localStorage .getItem(TODOS_KEY) );
 return loadedToDos || [];
 }
 ... AngularJS Angular 2
  • 34. Angular Key Concepts dependency injection dependency injection AngularJS Angular 2 DI based on naming DI based on types (usingTypeScript and Decorators) Singletons Hierarchical DI
  • 35. Dependency Injection var app = angular.module('todoApp');
 app.factory('toDoService', toDoService);
 
 function toDoService() { ... } @Injectable()
 export class ToDoService {
 ... } AngularJS Angular 2 @Component({
 selector: 'td-todo-app',
 template: require('./app.component.html'),
 directives: [NewTodo, ToDoList],
 providers: [ToDoService]
 })
 export class TodoApp implements OnInit {
 constructor(private todoService:ToDoService){} ... } app.controller('todoController', ToDoController);
 
 ToDoController.$inject = ['toDoService'];
 function ToDoController(todoService) { ... } registration: injection:
  • 36. Angular Key Concepts controllers components data-binding data-binding / data-flow directives directives services dependency injection services dependency injection components (ng 1.5) components AngularJS Angular 2 Many key concepts remain the same. But the implementation has changed.
  • 37. There is more … filters Pipes AngularJS Angular 2 http with Promises http with RxJs (Promises still supported) Routing (template centered) Hierarchical Component Router … …
  • 38. The core concepts of Angular 2 are clean and easy to learn … … but setting up a full Angular project can be quite complicated today.
  • 40. AngularJS: an effective tool but not elegant …
  • 42. Angular is distributed through NPM Node Package Manger To get Angular on your development machine, you have to install Node.JS. https://www.npmjs.com/
  • 44. Language Choices ES5 2015 weakly typed strongly typed (optional) no com-
 pilation compilation
  • 45. Angular for ES2015 &TS relies on ES2015 modules.
 There is no support for ES2015 modules in browsers today.
 A module-system is mandatory. VS. SystemJS To pack or (not) to pack?
  • 46. Build Toolchain Typically you need a front-end build for transpilation and module bundling.
  • 47. Angular 2 aspires to be a platform progressive web-apps for mobile
 (web workers, cache, push, offline) https://mobile.angular.io/ classic web-apps for desktops installed mobile apps (hybrid) installed mobile apps (native integrations) server side rendering https://universal.angular.io/ installed desktop apps https://github.com/NathanWalker/angular2-seed-advanced dev tooling https://cli.angular.io/
  • 48. Is Angular 2 ready for production? October 2014: Initial announcement of Angular 2 December 2015: Angular 2 released as beta May 2016: Angular 2 Release Candidate 0 June 2016: Angular 2 Release Candidate 2 What is missing: - Router (!) - Offline Compilation & BuildToolchain - internationalization - 3rd Party Ecosystem https://www.reddit.com/r/angularjs/comments/4i2n3k/angular_2_was_never_ready_for_a_release_candidate/
  • 49. The Router Debacle http://blog.jonasbandi.net/2016/06/ng2-router.html - Dez 2014: New Router announced for Angular 1.4 and Angular 2 - June 2015: New Router is deprecated - Angular 2 beta is developed with the Component router - March 2016: Component Router is released for Angular 1.5 - May 2016: Component Router is deprecated. Router 2.0 is part of Angular 2 RC1 - June 2016: Router 2.0 is deprecated, Router 3.0 is announced
  • 50. Jonas Bandi
 [email protected] Twitter: @jbandi Tomorrow: DevDay Workshop - Hands On Angular 2 Digicomp Course: Front-End-Entwicklung mit Angular 2, JavaScript und TypeScript Questions?