Alte considerații
== înlocuire funcții cu pipes - se cheamă doar când se schimbă datele de intrare
{{ product.price | addTax | currency }}
@Pipe({
name: 'addTax'
})
export class AddTaxPipe implements PipeTransform {
transform(price: number): number {
// cod
}
}
== Memo Decorator - ajută la caching în funcția de transform a unui pipe, când se trimite un parametru primitiv
- dacă se repetă parametrii, ține minte rezultatul
- reies mai puține apeluri
import memo from 'memo-decorator';
...
@memo
transform(price: number): number {
// cod
}
Operatori HttpClient & RxJS
== switchMap: "switch to a new observable" - după ce primește rezultat de la un Observable, anulează subscripția, trece la următoarea
return this.http.get(url)
. pipe(switchMap (param1 => {
return this.http.get(param1['param2']) // conține un url pt a obține date suplimentare
.pipe (map (res2 => {param1['param2'] = res2; return param1;}))
}));
== mergeMap: nu anulează inner subscripțiile, permite mai multe, nu garantează ordinea elementelor (concatMap face asta)
return this.http.get(url).pipe(switchMap (...), mergeMap (...), toArray);
== forkJoin: când toate apelurile s-au finalizat, întoarce un array cu rezultatele lor
return forkJoin (this.getA(), this.getB())
. pipe (map ((res) => {return {val1: res[0], val2: res[1]}}));
Securitate
== CORS (Cross-origin Resource Sharing) - pe server se stabilesc domeniile/porturile de pe care poate primi request (trebuie să limiteze explicit domeniile, header-ele și metodele permise, ex. GET, POST, etc)
== CRSF (Cross-site Request Forgery)
- pt prevenire se activează CSRF pe server dacă se folosește autentificarea prin cookie-uri
- Angular va folosi token-ul primit în cookie-urile trimise de server pt a îl adăuga în header-ul de request (doar Angular poate face asta).
== Route Guards - OK, dar nu furnizează securitate
== Transmitere date secrete din Angular: NOK; dar se poate crea un API intermediar care să împacheteze secretul și să-l trimită la API-ul destinatar. Folosire tokeni JWT cu dată de expirare.
Interceptori HTTP
Interceptează requests / responses și atașează date în plus (ex. de tokeni de securitate).
authReq - request-ul îmbunătățit cu noi date
withCredentials - adăugat când se folosesc cookies & CORS
next.handle - predă ștafeta la următorul interceptor, dacă există
Se declară în core.module.ts.