Curs Angular
Curs Angular
1. Introducere
2. Rutare ș i navigare
3. Serviciile
4. Formulare Angular
Introducere
•FrameworkJavaScript(ouTypeScript)
•Prezentat de Google în 2009
Permițând crearea de aplicații web și mobile
▪ Front-End (întregul set de elemente vizibile ș i accesibile direct pe o aplica ț ie web sau o aplica ț ie
web mobil
▪ Aplicaț ie pe o singură pagină (O SPA este o aplicaț ie care conț ine o singură pagină HTML ([Link]) recuperată de la
server).
•Respectă arhitectura MVVM (Model-View-ViewModel)
▪ Model: reprezentat de obicei printr-o clasă referită de stratul de acces la date (clasă sau interfaț ă
TypeScript).
▪ Vizualizare: conț inutul legat de dispunerea ș i aspectul a ceea ce un utilizator vede pe ecran, primind interacț iunea cu
utilizatorul: clic, introducere, trecere cu mouse-ul...
▪ ViewModel: înlocuitorul controller-ului în arhitectura MVC, conectat la vedere prin legarea de date, reprezentat
în Angular printr-un fiș ier *.[Link].
•Angular utilizează următoarele limbaje:
•HTML pentru viziuni. HTML pentru viziuni.
•CSS pentru stiluri.
•TypeScript pentru scripturi începând cu versiunea 2.
H
4
Introduction-Historique
•Angular
H
1 (Agular JS) :
▪ Prima versiune de Angular care este cea mai populară.
▪ Ea este bazată pe o arhitectură MVC pe partea clientului. Aplicaț iile Angular 1 sunt scrise în Java
Scenariu.
Angular 2 (Angular) :
▪ Este o rescriere a Angular 1 care este mai performantă, mai bine structurată ș i reprezintă viitorul de
Angular.
▪ Aplicaț iile Angular2 sunt scrise în Type Script, care este compilat ș i tradus în Java Script înainte
de a fi executat de către browserele web.
▪ Angular 2 est basée sur une programmation basée sur les Composants Web (Web Component)
•Angular 4, 5, 6, 7, 8,…: sunt simple actualizări ale Angular 2 cu îmbunătățiri la nivel
performanț e.
5
Arhitectura de bază a unei aplicaț ii Angular
6
Instalare
• Pentru a instala Angular, trebuie să descărcați și să instalați NodeJS (Ultima versiune stabilă LTS)
•Pentru a instala Angular, executați comanda
npm install–g @angular/cli
•Pentru a instala o versiune bine definită (de exemplu 8)
npm install -g @angular/cli@8
•Pentru a verifica versiunea de Angular instalată, executați comanda
versiunea ng
➢ npm (managerul de pachete node): gestionarul de pachete implicit pentru o aplicaț ie JavaScript.
➢ angular-cli (interfa ț a de linie de comandă): instrument propus de Google pentru a facilita crearea ș i
construirea unei aplicaț ii Angular prin executarea directă a comenzilor. 7
Comenzi CLI de utilizat frecvent
Comenzi Nevoi
9
Structura Proiectului Angular
Un component este o clasă care are decoratorul @Component. Acest decorator are
proprietăț ile următoare:
Legarea evenimentelor: în Angular, legarea evenimentelor este folosită pentru a gestiona evenimentele
declanș ate precum clicul de buton, miș carea mouse-ului, etc. Când
evenimentul se produce, el apelează metoda specificată în componentă.
Exemple:
Interpolarea ș irurilor: este o tehnică
de legare OneWay, ea foloseș te
expresia {{ }} pentru a afiș a
datele componentei în vedere.
Exemple:
Legătura bidirecț ională: am văzut că în legătura unidirecț ională, orice modificare în
vue nu a fost reflectată în componentă. Pentru a rezolva această problemă, Angular TwoWay
Legare.
[Link]
[Link]
Observaț ie: trebuie adăugat „FormsModule” în tabloul imports din fiș ierul [Link]
12
Directivele DOM (Modelul Obiectului Document) este o interfaț ă de
programare care este o reprezentare a HTML-ului unei pagini web ș i
care permite accesul la elementele acestei pagini web ș i le modifică
Directiva sunt instrucțiuni integrate în DOM. cu limbajul JavaScript. Trebuie să vedem DOM-ul ca un copac unde
fiecare element poate avea zero sau mai mulț i copii, care pot avea
însuș i zero sau mai mulț i copii, etc…
•Când Angular citește șablonul și întâlnește o directivă pe care o recunoaște, urmează instrucțiunile corespunzătoare.
•La directivă *ngFor: este foarte utilă în cazul unui tablou și când avem nevoie să repetăm un anumit proces.
Exemple: <ul>
<li *ngFor="let p of produse">{{ [Link] }}</li>
</ul>
•Directiva *ngIf: este utilizată atunci când doriți să afișați sau să eliminați un element în funcție de o condiție. Acceptă un
boolean în parametru. Exact aș a cum suntem obiș nuiț i cu alte limbaje de programare, directiveangularngIfne
permite, de asemenea, să declare un blocelse. Acest bloc este afiș at dacă instrucț iunea definită în blocul principal poate fi falsă.
Exemple :<div *ngIf="x%2 != 0 ;elsesinon"> impar</div>
…
…
pereche 13
Les directives
•La directiva [ngStyle]Această directivă permite modificarea stilului unui element HTML. Se utilizează
împreună cu legarea proprietăț ii pentru a recupera valori definite în clasă.
•La directive [ngClass]: permite atribuirea de noi clase unui elementHTML. Se utilizează împreună
cu binding-ul de proprietate pentru a recupera valorile definite în clasă sau în foaia de stil.
Exemple:
Se definesc două clase roș ie ș i albastră în [Link]
.rouge {
color: red;
}
.bleu {
color: blue;
}
Pentru a asocia clasa roș ie cu eticheta <p>
<p[ngClass]="{'rouge':true}">
{{ nom }}
</p>
De asemenea, putem apela o metodă în directiva ngClass 14
Pipelines
Pipelile sunt filtre utilizabile direct din vizualizare pentru a transforma valorile în timpul 'legării'.
•Exemple:{{nom|uppercase}},{{prix|currency:'TND':'symbol':'2.2-2'}}
15
Introducere în Rutare
În general, nu căutăm să afișăm toate componentele în același timp în bloc.
principal.
•Un sistem de routare permite asocierea unui drum (url-path) la un tratament particular.
•Este vorba despre instrucțiunile de afișare care trebuie urmate pentru fiecare URL, adică care(s)
Routerul angular permite navigarea de la o vedere la alta atunci când utilizatorii execută
sarcini de aplicare.
17
Modulul AppRouting
18
Crearea unui sistem de rutare
La constantărutele reprezintă căile care trebuie declarate într-un proiect Angular:
➢Chaque objet {path: « url du composant »,component: « la class du composant concerné »}
19
Aplicaț ie de rutare
•Pentru a aplica un rutaj într-o vizualizare (Template HTML), avem nevoie de următoarele directive:
▪ routerLink: este o directivă care ia ca valoare calea (path) indicată în tabela rute
▪ Router-outlet este o directivă care permite specificarea locului unde va fi încărcată vederea. Sintaxa sa este
<router-outlet></router-outlet>
ComponentaAcasă afi ș ează într-un element <router-outlet></router-outlet>. Acest element este destinat să se
găsiț i în vederea componentei rădăcină.
20
Redirecț ionare
•redirectTo:est une propriété ajouté dans l’objet du route pour rediriger une route
21
Parametrii rutei
tu
22
Recuperarea parametrilor
1. Importer ActivatedRoute care ne va permite să recuperăm parametrii rutei.
2. Injecter ActivatedRoute au niveau du composant. Injec ț ie de dependen ț econstă
a crea dinamic (a injecta)
3. Atribuie parametrul unei variabile a componentei dependen ț e între diferitele
obiecte bazându-se pe o
description (fichier de configuration
Atribuirea poate fi făcută în mai multe moduri: ou metadate) sau în mod
programatic
•Metoda 1: un snapshot al URL-ului prin ActivatedRoute Astfel, dependen ț ele între
componentele software nu mai sunt
exprimate în cod într-un mod
static dar determinate
dinamic la execuț ie.
tu
23
Recuperarea parametrilor
•O altă metodă de a recupera date:queryParams
Parametrii de interogare sunt parametrii trimiși printr-o cerere GET.
•Identificat cu ?.
24
Aplicaț ie de rutare prin componentă
•Pentru a declanșa o rută prin componentă, se folosește obiectul Router și metoda sa navigate.
•Această metodă ia același parametru ca routerLink, și anume un tablou care conține descrierea
de pe drum.
•Pentru a utiliza Route, trebuie să-l importați din @angular/router și să-l injectați în componenta dumneavoastră.
25
Rute wildcard
Ruta wildcard permite redirecționarea către un component dacă calea indicată
nu există (pagina negasită)
26
Ce este un serviciu?
•un serviciu este o clasă TypeScript decorată cu @Injectable, care poate conține cod reutilizabil sau date
pe care dorim să o împărtăș im între mai multe componente. (Evitaț i redundanț a)
În general, acesta este serviciul care interacționează cu partea din spate a aplicației, trimițând cereri.
HTTP.
28
Crearea unui serviciu
: generează serviciu nume-serviciu //
•Pentru a crea un serviciu ng ng g s nume_serviciu
import{Injectable}from'@angular/core';
@Injectable({
providedIn:'root'
})
exportclassTestService{
constructor() { }
•Din versiunea 6 a Angular, nu mai este nevoie să declarăm serviciile în secțiunea providers din [Link]
29
Injectarea dependenț elor
Când Angular creează un component, mai întâi cere unui injector serviciile necesare.
• Un injector menț ine un container de instanț e de servicii pe care l-a creat anterior.
• Când toate serviciile solicitate au fost rezolvate ș i returnate, Angular poate apela
constructorul componentului cu aceste servicii ca argumete.
30
Exemple de interacț iune component-serviciu
import{ Injectable }from'@angular/core';
import{ Produs }from'../model/produs';
export classDetaliuProdusComponentimplementOnInit {
@Injectabil({ produit:Produit
providedIn:'root'
}) constructor(privatear: ActivatedRoute,
export classTestService { privaterouter:Router,
privateproducts:Array<Produit>=newArray<Produit>(); privateservice:TestService) { }
ngOnInit() {
constructor() { letid:number
[Link]({id :1,nom :"pc",prix :1200,quantite :20, [Link]((params)=>{
urlImg :"./assets/images/pc [Link]"}); id=+[Link]('id')
[Link]({id :2,nom :"clavier",prix :10,quantite :10, [Link](" " + id + " ");
[Link]=[Link](id)
urlImg :"./assets/images/[Link]"});
});
[Link]({id :3,nom :"souris",prix :5,quantite :0,
urlImg :"./assets/images/[Link]"}); }
}
publicgetProducts(){
returnaț i [Link];
}
publicgetProductById(id)
{
return [Link](x => [Link] == id);
}
} 31
Simularea părț ii backend (json-server)
•Instrumentul softwarejson-server este o soluț ie simplă pentru a simula un API REST în timpul dezvoltării aplicaț iei dumneavoastră.
{"id":1,
"nom":"pc portable",
"prix":1500,
"quantite":20,
"nomImg":"pc portable"
},…]
•Veți putea pur și simplu să alegeți URL-ul, metoda HTTP (cel mai des GET, POST, PUT, PATCH și DELETE),
header-urile, parametrii de interogare ș i, în unele cazuri, corpul cererii.
•Metode http:
▪ GET: cererile GET sunt cele efectuate de un browser atunci când introduceț i o URL în bara de
navigaț ie. Ele au scopul de a căuta o pagină sau date.
▪ POST: cererile POST au scopul de a trimite informaț ii, conț inută în corpul cererii, către server.
▪ PUT: cererile PUT vor suprascrie o resursă cu date noi, de asemenea prezente în corpul cererii.
cerere. Este utilizată pentru a actualiza datele cu condiț ia să fim capabili să furnizăm resursa
zi în întregime.
▪ PATCH: cererile PATCH sunt utilizate ș i pentru a actualiza o resursă, dar modificând doar elementul
trimis în corpul cererii.
▪ DELETE: aș a cum sugerează numele, cererea DELETE serveș te la ș tergerea unei resurse 33
Exemple
34
Modul HTTP
Pentru a utiliza modulul HTTP, acesta trebuie injectat în componenta sau serviciul din
pe care doriț i să-l utilizaț i: constructor(private http:HttpClient)
35
Exemple de serviciu
import{ Injectable }from'@angular/core';
importă{HttpClient}de la'@angular/commune/http'
import{ Observable }from'rxjs';
import{ Produs }from'../model/produs';
@Injectable({
providedIn:'root'
})
export class ProdusServiciu {
Pentru a efectua o cerere, modulul httpClient ne oferă o
host="[Link] metodăget(). Această metodă returnează un Observale.
constructor(private client: HttpClient) { }
publicgetProducts():Observable<Produit[]>{
return [Link]<Produs[]>([Link]);
}
publicgetProductById(id):Observable<Produit>
{
URL-ul endpoint
return [Link]<Produs>([Link]+id);
} (backend)
publicaddProduct(produit:Produit):Observable<void>
{
returnează [Link]<void>([Link],produs);
}
}
36
Utilizarea unui serviciu
[Link]
products:Produit[];
constructor(privateservice:ServiciuProdus) { }
ngOnInit() {
[Link]().subscribe(data=>{
[Link]=data;
……});
}
[Link]
product:Produit
constructor(serviciuPrivat: ProduitService, rutaActivata: ActivatedRoute) {
}
ngOnInit() {
letid:number
[Link]((params)=>{
id=+[Link]('id')
[Link](id).subscribe(data=>{
[Link]=data;
})
}); 37
Introducere
Angular propune două tipuri de formulare:
Formulare conduse de template (pilotate de template): Forme reactive :
- Bazat pe ReactiveFormsModule
- Utilizând FormsModule
- robust,
- Basé sur les directives (ngmodel) - Evolutiv,
- Conceput pentru aplica ț iile care necesită
- Facile
controllable speciale.
- Recomandat pentru formularele simple • Grup de formulare
Constructor de formulare
Template Driven Forms - ngModel
•Importați [Link]
•Pentru fiecare element, adăugați directiva angularngModel. Acest lucru permite legarea valorii
controalele HTML (intrare, selecț ie, zonă de text) ale datelor aplicaț iei.
•Atenție, dacă nu adăugați ngModel la câmpul sau inputul dvs., acest câmp nu va fi
plus luat în considerare.
<inputtype="text"ngModel name="nom"
Formulare bazate pe template - ngForm
Directiva NgForm completează elementul form cu funcț ionalităț i suplimentare. Aceasta conț ine controalele pe care le aveț i
create pentru elementele cu o direcț ie ngModel ș i un atribut name ș i monitorizează proprietăț ile lor, inclusiv valabilitatea acestora.
<form(ngSubmit)=" onsubmit(f)"#f=ngForm></form>
•Cu ngModel, valoarea atributului name va deveni o cheie a obiectului de referință ngFormfque noi
am creat.
<form(ngSubmit)="onsubmit(f)"#f=ngForm>
…
<input type="text">
ngModel
name="nom"
necesar
#nom="ngModel"
>
Formulare bazate pe ș ablon - Validare
•Utilizarea dengModel într-un formular îți indică, de exemplu, dacă utilizatorul a atins
control ș i dacă valoarea este invalidă.
<form(ngSubmit)="onsubmit(f)"#f=ngForm>
…
<input type="text">
ngModel
name="nom"
necesar
#nom="ngModel"
>
<spanstyle=color:red*ngIf="![Link] && [Link]">Entrez le nom</span>
Template Driven Forms - Validation
ProprietateavaliddengFormpermite verificarea dacă formularul este valid sau nu, bazându-se pe
validatori pe care îi conț ine.
<form(ngSubmit)="onsubmit(f)"#f=ngForm>
…
<inputtype="text"
ngModel
name="nom"
necesar
#nom="ngModel"
>
<span style=color:red*ngIf="![Link] && [Link]">Introduceț i numele</span>
…
<button[disabled]=![Link]="btn btn-success">Adaugă</button>
Aici,[Link] false decât dacă toate elementele formularului trec controalele lor
validările respective. Butonul de trimitere va fi dezactivat până când formularul va fi valid.