SlideShare une entreprise Scribd logo
1  sur  40
INTRODUCTION À ANGULAR 2 Laurent Duveau
7 juillet 2016
1
LAURENT DUVEAU
@LaurentDuveau
Fondateur de l’Académie Angular
Formation classroom Angular 2 sur 2 jours
23 formations en 10 mois
Montréal, Québec, Toronto, Vancouver,
Ottawa, Calgary, …
ANGULAR 2
Angular 2 est en
Release Candidate
#RC4
www.angular.io
Angular 2
Final ?
Angular 2 est
bâti avec
TypeScript
Angular 2 est
compatible avec
Internet Explorer 9+
UN PREMIER
PROJET
9
CONFIGURATION TYPIQUE DE L'ENVIRONNEMENT…
10
Installation de NodeJs
package.json
tsconfig.json
typings.json
Setup grunt/gulp ou
WebPack
Setup module loader
Setup unit testing
Setup build release
> npm install angular typescript typings
tslint karma jasmine ……
CONFIGURATION TYPIQUE DE L'ENVIRONNEMENT…
11
ANGULAR CLI! (COMMAND LINE INTERFACE)
Mise en route rapide!
12
> npm install angular-cli -g
> ng new DemoApp
> ng serve
cli.angular.io
COMPOSANTS
Votre app est un
arbre de
composants
modulaires
Map Update
App
DetailsList
ProductsMenu Contact
QU'EST-CE QU'UN COMPOSANT?
Un composant est un objet réutilisable
Fait de:
Offre un "sélecteur":
HTML
Template
Code
(classe)
<products-list></products-list>
CECI EST UN COMPOSANT
imports
décorateurs
classe
import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'product-details',
templateUrl: 'product-details.component.html'
})
export class ProductDetailsComponent {
}
ÉTAPE DE BOOTSTRAP AU DÉMARRAGE
<html>
<body>
</body>
</html>
<script src="angular2.js"></script>
<script src="..."></script>
1
index.html
<app-component>3
Bootstrap
@Component({
selector: 'app-component'
})
class AppComponent {
}
app.component.ts
2
TEMPLATES
19
RENDERING
{{ expression }}
<div>
{{ product.name }}
</div>
BINDING SUR PROPRIÉTÉS
[ propriété ]
<my-menu [items]="mainMenu"></my-menu>
<img [src]="imageUrl" />
<div [hidden]="isHidden"></div>
<div [style.width.px]="mySize"></div>Binding “one way” sur
toute propriété du DOM
GESTION DES ÉVÈNEMENTS
( event )
<button (click)="sort($event)">Total</button>
<select (change)="sortProperty('prix')">
BINDING BI-DIRECTIONNEL
[( ngModel )]
Syntaxe “bananes dans une boîte”
<input type="text" [(ngModel)]="prod.prix" />
<my-comp [(title)]="name"></my-comp>
DIRECTIVES BUILT-IN
Angular 2 offre quelques directives built-in comme ngFor et ngIf
Les directives n’ont pas de vues
<div *ngIf="canViewProducts">
<tr *ngFor="let product of products">
<td>{{ product.name }}</td>
<td>{{ product.price }}</td>
</tr>
PIPES
Utilisation de Pipes pour formater des données
Plusieurs pipes built-in
uppercase, lowercase, slice, date, currency, json
<td>{{ customer.orderTotal | currency:'CAD':true:'2.1-3' }}</td>
Formater comme
monnaie
COMPOSANTS ET TEMPLATES
Composants s’appuient sur des décorateurs pour définir des metadatas
@Component({
selector: 'customers',
templateUrl: 'app/customers/customers.component.html',
providers: [DataService],
directives: [RouterLink, SortByDirective],
pipes: [CapitalizePipe, TrimPipe]
})
export class CustomersComponent {
constructor(private dataService: DataService) { }
}
<customers></customers>
Déclaration des directives et
pipes utilisés dans le template
RÉCAPITULATIF
Angular 2 Cheat Sheet
https://angular.io/docs/ts/latest/guide/cheatsheet.html
DÉMONSTRATION
28
SERVICES
29
SERVICES ?
Classes Js offrant des fonctionnalités réutilisables
 règles d’affaire, calculs, appels Ajax, etc.
Implémentés comme des singletons
Indépendant des composants
Un service peut être utilisé par des composants par injection de dépendance
Un service peut utiliser d’autres services par injection de dépendance
CRÉER UN SERVICE
31
import { Injectable } from '@angular/core';
Import { Http } from '@angular/http';
@Injectable()
export class ProductsService {
constructor(private _http: Http) { }
getProducts() { … }
}
products.service.ts
Injecté au runtime
Charge les modules
Décorateur @Injectable si le service
utilise lui-même d’autres services
UTILISER UN SERVICE
services
32
@Component({
selector: 'products',
templateUrl: 'products-list.component.html',
providers: [ProductsService]
})
export class ProductsListComponent {
products: Product[];
constructor(private _productsService: ProductsService) { }
ngOnInit() {
this._productsService.getProducts()
.subscribe((data: Product[]) => {
this.products = data;
});
}
}
products-list.component.ts
Les services doivent être déclarés
au composant
ProductsService est injecté au runtime
DÉMONSTRATION
HTTP
34
SERVICE ANGULAR HTTP
Les services REST peuvent être consommés avec le service Angular Http
 import depuis @angular/http et spécifier le provider)
Fonctions standards get, put, post, delete sont supportées
Utiliser RxJS Observables ou Promesses pour opérations asynchrones
35
SERVICE ANGULAR HTTP
36
import { bootstrap } from '@angular/platform-browser-dynamic';
import { HTTP_PROVIDERS } from '@angular/http';
import { AppComponent } from './app/';
bootstrap(AppComponent, [HTTP_PROVIDERS]);
Import depuis la
librairie HTTP
main.ts
Passer HTTP_PROVIDERS
comme dépendence pour
l’app au complet
http
37
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
@Injectable()
export class ProductsService {
constructor(private _http: Http) { }
getProducts() : Observable<Product[]> {
return this._http.get('api/products')
.map((response: Response) => response.json())
.catch(this.handleError);
}
}
Injecter le service Http
products.service.ts
Imports
Retourne un
Observable
DÉMONSTRATION
Merci!
Introduction à Angular 2

Contenu connexe

Tendances

Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptxIdrissaDembl
 
Angular 16 – the rise of Signals
Angular 16 – the rise of SignalsAngular 16 – the rise of Signals
Angular 16 – the rise of SignalsCoding Academy
 
Angular 6 - The Complete Guide
Angular 6 - The Complete GuideAngular 6 - The Complete Guide
Angular 6 - The Complete GuideSam Dias
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework AngularLhouceine OUHAMZA
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 formsEyal Vardi
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesWebStackAcademy
 
Angular 5 presentation for beginners
Angular 5 presentation for beginnersAngular 5 presentation for beginners
Angular 5 presentation for beginnersImran Qasim
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJSAbul Hasan
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8Valerio Radice
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass SlidesNir Kaufman
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariSurekha Gadkari
 
Angular 4 and TypeScript
Angular 4 and TypeScriptAngular 4 and TypeScript
Angular 4 and TypeScriptAhmed El-Kady
 

Tendances (20)

Angular
AngularAngular
Angular
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
Angular 9
Angular 9 Angular 9
Angular 9
 
Angular modules in depth
Angular modules in depthAngular modules in depth
Angular modules in depth
 
What is Angular?
What is Angular?What is Angular?
What is Angular?
 
Angular 16 – the rise of Signals
Angular 16 – the rise of SignalsAngular 16 – the rise of Signals
Angular 16 – the rise of Signals
 
Angular
AngularAngular
Angular
 
Angular 6 - The Complete Guide
Angular 6 - The Complete GuideAngular 6 - The Complete Guide
Angular 6 - The Complete Guide
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 
Angular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP ServicesAngular - Chapter 7 - HTTP Services
Angular - Chapter 7 - HTTP Services
 
Angular 11
Angular 11Angular 11
Angular 11
 
Angular 5 presentation for beginners
Angular 5 presentation for beginnersAngular 5 presentation for beginners
Angular 5 presentation for beginners
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
 
Introduzione ad angular 7/8
Introduzione ad angular 7/8Introduzione ad angular 7/8
Introduzione ad angular 7/8
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
Angular Introduction By Surekha Gadkari
Angular Introduction By Surekha GadkariAngular Introduction By Surekha Gadkari
Angular Introduction By Surekha Gadkari
 
Angular 2
Angular 2Angular 2
Angular 2
 
Angular 4 and TypeScript
Angular 4 and TypeScriptAngular 4 and TypeScript
Angular 4 and TypeScript
 

Similaire à Introduction à Angular 2

Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindPhilippe Didiergeorges
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
Alphorm.com Formation Angular - Les fondamentaux
Alphorm.com Formation Angular - Les fondamentauxAlphorm.com Formation Angular - Les fondamentaux
Alphorm.com Formation Angular - Les fondamentauxAlphorm
 
Angular : Un aperçu du framework de développement d’applications Web
Angular : Un aperçu du framework de développement d’applications WebAngular : Un aperçu du framework de développement d’applications Web
Angular : Un aperçu du framework de développement d’applications WebDekeltv1
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sassmarwa baich
 
Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJsRadhoueneRouached
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrinesrdissi60
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallCloudOps2005
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Clément Dubois
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 
Workshop angular2
Workshop angular2 Workshop angular2
Workshop angular2 sihemhcine
 

Similaire à Introduction à Angular 2 (20)

Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium Versusmind
 
Support cours angular
Support cours angularSupport cours angular
Support cours angular
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 
Cours 1 introduction
Cours 1 introductionCours 1 introduction
Cours 1 introduction
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
AngularJS
AngularJSAngularJS
AngularJS
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Cours 2 les composants
Cours 2 les composantsCours 2 les composants
Cours 2 les composants
 
Alphorm.com Formation Angular - Les fondamentaux
Alphorm.com Formation Angular - Les fondamentauxAlphorm.com Formation Angular - Les fondamentaux
Alphorm.com Formation Angular - Les fondamentaux
 
Angular : Un aperçu du framework de développement d’applications Web
Angular : Un aperçu du framework de développement d’applications WebAngular : Un aperçu du framework de développement d’applications Web
Angular : Un aperçu du framework de développement d’applications Web
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJs
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de Montréall
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 
Workshop angular2
Workshop angular2 Workshop angular2
Workshop angular2
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 

Plus de Laurent Duveau

Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Laurent Duveau
 
8 things you didn't know about the Angular Router, you won't believe #6!
8 things you didn't know about the Angular Router, you won't believe #6!8 things you didn't know about the Angular Router, you won't believe #6!
8 things you didn't know about the Angular Router, you won't believe #6!Laurent Duveau
 
De 0 à Angular en 1h30! (french)
De 0 à Angular en 1h30! (french)De 0 à Angular en 1h30! (french)
De 0 à Angular en 1h30! (french)Laurent Duveau
 
Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Laurent Duveau
 
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced RoutingLaurent Duveau
 
Debugging an Angular App
Debugging an Angular AppDebugging an Angular App
Debugging an Angular AppLaurent Duveau
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponLaurent Duveau
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersLaurent Duveau
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponLaurent Duveau
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersLaurent Duveau
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersLaurent Duveau
 
Introduction to Angular with TypeScript for .NET Developers
Introduction to Angular with TypeScript for .NET DevelopersIntroduction to Angular with TypeScript for .NET Developers
Introduction to Angular with TypeScript for .NET DevelopersLaurent Duveau
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersLaurent Duveau
 
Angular 2... so can I use it now??
Angular 2... so can I use it now??Angular 2... so can I use it now??
Angular 2... so can I use it now??Laurent Duveau
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webLaurent Duveau
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webLaurent Duveau
 
Introduction to SPAs with AngularJS
Introduction to SPAs with AngularJSIntroduction to SPAs with AngularJS
Introduction to SPAs with AngularJSLaurent Duveau
 
Xamarin.Forms [french]
Xamarin.Forms [french]Xamarin.Forms [french]
Xamarin.Forms [french]Laurent Duveau
 
Back from Xamarin Evolve 2014
Back from Xamarin Evolve 2014Back from Xamarin Evolve 2014
Back from Xamarin Evolve 2014Laurent Duveau
 

Plus de Laurent Duveau (20)

Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.Shit happens… debugging an Angular app.
Shit happens… debugging an Angular app.
 
8 things you didn't know about the Angular Router, you won't believe #6!
8 things you didn't know about the Angular Router, you won't believe #6!8 things you didn't know about the Angular Router, you won't believe #6!
8 things you didn't know about the Angular Router, you won't believe #6!
 
De 0 à Angular en 1h30! (french)
De 0 à Angular en 1h30! (french)De 0 à Angular en 1h30! (french)
De 0 à Angular en 1h30! (french)
 
Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)Angular 6, CLI 6, Material 6 (french)
Angular 6, CLI 6, Material 6 (french)
 
Angular Advanced Routing
Angular Advanced RoutingAngular Advanced Routing
Angular Advanced Routing
 
Debugging an Angular App
Debugging an Angular AppDebugging an Angular App
Debugging an Angular App
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET Developers
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET Developers
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET Developers
 
Introduction to Angular with TypeScript for .NET Developers
Introduction to Angular with TypeScript for .NET DevelopersIntroduction to Angular with TypeScript for .NET Developers
Introduction to Angular with TypeScript for .NET Developers
 
Introduction to Angular for .NET Developers
Introduction to Angular for .NET DevelopersIntroduction to Angular for .NET Developers
Introduction to Angular for .NET Developers
 
Angular 2... so can I use it now??
Angular 2... so can I use it now??Angular 2... so can I use it now??
Angular 2... so can I use it now??
 
ngconf 2016 (french)
ngconf 2016 (french)ngconf 2016 (french)
ngconf 2016 (french)
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs web
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs web
 
Introduction to SPAs with AngularJS
Introduction to SPAs with AngularJSIntroduction to SPAs with AngularJS
Introduction to SPAs with AngularJS
 
Xamarin.Forms [french]
Xamarin.Forms [french]Xamarin.Forms [french]
Xamarin.Forms [french]
 
Back from Xamarin Evolve 2014
Back from Xamarin Evolve 2014Back from Xamarin Evolve 2014
Back from Xamarin Evolve 2014
 

Introduction à Angular 2

  • 1. INTRODUCTION À ANGULAR 2 Laurent Duveau 7 juillet 2016 1
  • 2. LAURENT DUVEAU @LaurentDuveau Fondateur de l’Académie Angular Formation classroom Angular 2 sur 2 jours 23 formations en 10 mois Montréal, Québec, Toronto, Vancouver, Ottawa, Calgary, …
  • 4. Angular 2 est en Release Candidate #RC4 www.angular.io
  • 6. Angular 2 est bâti avec TypeScript
  • 7.
  • 8. Angular 2 est compatible avec Internet Explorer 9+
  • 10. CONFIGURATION TYPIQUE DE L'ENVIRONNEMENT… 10 Installation de NodeJs package.json tsconfig.json typings.json Setup grunt/gulp ou WebPack Setup module loader Setup unit testing Setup build release > npm install angular typescript typings tslint karma jasmine ……
  • 11. CONFIGURATION TYPIQUE DE L'ENVIRONNEMENT… 11
  • 12. ANGULAR CLI! (COMMAND LINE INTERFACE) Mise en route rapide! 12 > npm install angular-cli -g > ng new DemoApp > ng serve cli.angular.io
  • 14. Votre app est un arbre de composants modulaires
  • 16. QU'EST-CE QU'UN COMPOSANT? Un composant est un objet réutilisable Fait de: Offre un "sélecteur": HTML Template Code (classe) <products-list></products-list>
  • 17. CECI EST UN COMPOSANT imports décorateurs classe import { Component } from '@angular/core'; import { DataService } from './data.service'; @Component({ selector: 'product-details', templateUrl: 'product-details.component.html' }) export class ProductDetailsComponent { }
  • 18. ÉTAPE DE BOOTSTRAP AU DÉMARRAGE <html> <body> </body> </html> <script src="angular2.js"></script> <script src="..."></script> 1 index.html <app-component>3 Bootstrap @Component({ selector: 'app-component' }) class AppComponent { } app.component.ts 2
  • 20. RENDERING {{ expression }} <div> {{ product.name }} </div>
  • 21. BINDING SUR PROPRIÉTÉS [ propriété ] <my-menu [items]="mainMenu"></my-menu> <img [src]="imageUrl" /> <div [hidden]="isHidden"></div> <div [style.width.px]="mySize"></div>Binding “one way” sur toute propriété du DOM
  • 22. GESTION DES ÉVÈNEMENTS ( event ) <button (click)="sort($event)">Total</button> <select (change)="sortProperty('prix')">
  • 23. BINDING BI-DIRECTIONNEL [( ngModel )] Syntaxe “bananes dans une boîte” <input type="text" [(ngModel)]="prod.prix" /> <my-comp [(title)]="name"></my-comp>
  • 24. DIRECTIVES BUILT-IN Angular 2 offre quelques directives built-in comme ngFor et ngIf Les directives n’ont pas de vues <div *ngIf="canViewProducts"> <tr *ngFor="let product of products"> <td>{{ product.name }}</td> <td>{{ product.price }}</td> </tr>
  • 25. PIPES Utilisation de Pipes pour formater des données Plusieurs pipes built-in uppercase, lowercase, slice, date, currency, json <td>{{ customer.orderTotal | currency:'CAD':true:'2.1-3' }}</td> Formater comme monnaie
  • 26. COMPOSANTS ET TEMPLATES Composants s’appuient sur des décorateurs pour définir des metadatas @Component({ selector: 'customers', templateUrl: 'app/customers/customers.component.html', providers: [DataService], directives: [RouterLink, SortByDirective], pipes: [CapitalizePipe, TrimPipe] }) export class CustomersComponent { constructor(private dataService: DataService) { } } <customers></customers> Déclaration des directives et pipes utilisés dans le template
  • 27. RÉCAPITULATIF Angular 2 Cheat Sheet https://angular.io/docs/ts/latest/guide/cheatsheet.html
  • 30. SERVICES ? Classes Js offrant des fonctionnalités réutilisables  règles d’affaire, calculs, appels Ajax, etc. Implémentés comme des singletons Indépendant des composants Un service peut être utilisé par des composants par injection de dépendance Un service peut utiliser d’autres services par injection de dépendance
  • 31. CRÉER UN SERVICE 31 import { Injectable } from '@angular/core'; Import { Http } from '@angular/http'; @Injectable() export class ProductsService { constructor(private _http: Http) { } getProducts() { … } } products.service.ts Injecté au runtime Charge les modules Décorateur @Injectable si le service utilise lui-même d’autres services
  • 32. UTILISER UN SERVICE services 32 @Component({ selector: 'products', templateUrl: 'products-list.component.html', providers: [ProductsService] }) export class ProductsListComponent { products: Product[]; constructor(private _productsService: ProductsService) { } ngOnInit() { this._productsService.getProducts() .subscribe((data: Product[]) => { this.products = data; }); } } products-list.component.ts Les services doivent être déclarés au composant ProductsService est injecté au runtime
  • 35. SERVICE ANGULAR HTTP Les services REST peuvent être consommés avec le service Angular Http  import depuis @angular/http et spécifier le provider) Fonctions standards get, put, post, delete sont supportées Utiliser RxJS Observables ou Promesses pour opérations asynchrones 35
  • 36. SERVICE ANGULAR HTTP 36 import { bootstrap } from '@angular/platform-browser-dynamic'; import { HTTP_PROVIDERS } from '@angular/http'; import { AppComponent } from './app/'; bootstrap(AppComponent, [HTTP_PROVIDERS]); Import depuis la librairie HTTP main.ts Passer HTTP_PROVIDERS comme dépendence pour l’app au complet
  • 37. http 37 import { Http, Response } from '@angular/http'; import { Observable } from 'rxjs/Observable'; import 'rxjs/Rx'; @Injectable() export class ProductsService { constructor(private _http: Http) { } getProducts() : Observable<Product[]> { return this._http.get('api/products') .map((response: Response) => response.json()) .catch(this.handleError); } } Injecter le service Http products.service.ts Imports Retourne un Observable