DATA
CZAS
IMIENINY
FAZA KSIĘŻYCA
STAFLOTA ⊕ SEKTOR ALFA · BITEDU STATION

Poniższy przewodnik wprowadzi Cię w kluczowe zagadnienia Angulara, obejmujące podstawy Angular, wiązanie danych, usługi i implementacje zależności, trasowanie oraz formularze. Te elementy są niezbędne, abyś mógł samodzielnie budować zaawansowane aplikacje Angular.

1. Podstawy Angular

Instalacja: Aby zainstalować Angular CLI, wpisz w terminalu:
npm install -g @angular/cli

To zainstaluje Angular CLI globalnie, co pozwala na korzystanie z niego w dowolnym miejscu na komputerze.


Teraz możesz otworzyć przeglądarkę i wejść na adres http://localhost:4200.

src/app: Tutaj znajdują się wszystkie komponenty, serwisy i główna logika aplikacji.

angular.json: Plik konfiguracyjny, w którym definiowane są ustawienia projektu.

main.ts: Główny plik uruchamiający aplikację.

index.html: Główny plik HTML, w którym renderowana jest aplikacja Angular.

ng generate component nazwa-komponentu

Każdy komponent składa się z 4 plików: html (szablon), css (style), ts (logika), spec.ts (testy).

2. Wiązanie danych i Dyrektywy

Interpolacja ({{}}): Używaj interpolacji do wyświetlania danych w szablonie HTML. Przykład:
<h1>Witaj, {{ name }}!</h1>
     Wartość zmiennej name zostanie wstawiona w miejsce {{ name }}.

Property Binding ([property]): Używane do ustawiania wartości atrybutów HTML na podstawie danych z    komponentu. Przykład:
<img [src]=”imageUrl” />
Atrybut src zostanie ustawiony na wartość zmiennej imageUrl.

Event Binding ((event)): Umożliwia reagowanie na zdarzenia, takie jak kliknięcia. Przykład:
<button (click)=”kliknijMnie()”>Kliknij mnie!</button>
Gdy użytkownik kliknie przycisk, wywołana zostanie funkcja kliknijMnie().

*ngIf: Pozwala na wyświetlenie elementu tylko wtedy, gdy spełniony jest określony warunek.
<div *ngIf=”czyPokazac”>To jest widoczne, gdy zmienna `czyPokazac` jest prawdziwa.</div>

*ngFor: Umożliwia iterację po tablicach.
<div *ngFor=”let element of lista”>{{ element }}</div>

ngClass i ngStyle: Umożliwiają dynamiczne ustawianie klas CSS i stylów elementów.

3. Usługi i Dostarczanie zależności

ng generate service nazwa-uslugi

Serwisy są singletonami, co oznacza, że jedna instancja serwisu jest współdzielona przez całą aplikację.

constructor(private nazwaUslugi: NazwaUslugi) {}

Teraz możemy korzystać z metod serwisu w naszym komponencie.

4. Trasowanie

   { path: ”, component: HomeComponent },

   { path: 'about’, component: AboutComponent }

];
Każda trasa zawiera ścieżkę (path) oraz komponent, który powinien być wyświetlony.

ng generate guard auth

Guard może sprawdzić, czy użytkownik ma uprawnienia do wyświetlenia określonej strony.

5. Formularze

Angular oferuje dwa rodzaje formularzy: Template-Driven Forms oraz Reactive Forms.

Przykład:

<form #myForm=”ngForm”>

  <input type=”text” name=”nazwa” [(ngModel)]=”nazwa” required />

  <button type=”submit” [disabled]=”myForm.invalid”>Wyślij</button>

</form>

myForm = new FormGroup({

     nazwa: new FormControl(”)

});

     <input formControlName=”nazwa” />

     <button type=”submit”>Wyślij</button>

</form>

Walidacja: Angular oferuje wbudowane mechanizmy walidacji, takie jak required, oraz możliwość tworzenia własnych walidatorów.

Przykład walidacji:

import { Validators } from '@angular/forms’;

myForm = new FormGroup({

  nazwa: new FormControl(”, [Validators.required, Validators.minLength(3)])

});

To zapewni, że pole nazwa jest wymagane i musi mieć co najmniej 3 znaki.

6. Komunikacja z backendem (HTTP)

HttpClient: Angular oferuje moduł HttpClient, który pozwala na komunikację z serwerem za pomocą zapytań HTTP, takich jak GET, POST, PUT, DELETE.

import { HttpClientModule } from '@angular/common/http’;

@NgModule({

  imports: [

    HttpClientModule

  ]

})

export class AppModule {}

import { HttpClient } from '@angular/common/http’;

constructor(private http: HttpClient) {}

getData() {

     this.http.get(’https://api.example.com/data’).subscribe(response => {

    console.log(response);

    }, error => {

    console.error(’Błąd podczas pobierania danych’, error);

   });

}
HttpClient pozwala na obsługę odpowiedzi asynchronicznych za pomocą Observable, co pozwala na reagowanie na dane, kiedy są one gotowe.

7. Interakcje między komponentami

Dekorator @Input(): Pozwala na przekazywanie danych z komponentu rodzica do dziecka.
@Input() nazwa: string;
W szablonie komponentu rodzica:
<app-child [nazwa]=”parentName”></app-child>

kliknij() {

   this.onClicked.emit(’Kliknięto!’);

}

W szablonie komponentu rodzica:
<app-child (onClicked)=”handleClick($event)”></app-child>

8. RxJS i programowanie reaktywne

Tworzenie Observable:

   import { Observable } from 'rxjs’;

  const myObservable = new Observable(observer => {

  observer.next(’Wartość 1′);

  observer.next(’Wartość 2′);

  observer.complete();

});

  console.log(value);

   });

Operatory RxJS: Operatory, takie jak map, filter, switchMap, pozwalają na manipulowanie strumieniami danych.

9. Pipes

Wbudowane Pipes: Pipes to narzędzia do formatowania danych w szablonach HTML.

Przykłady wbudowanych pipes: date, currency, uppercase.

  <p>{{ today | date:’longDate’ }}</p>

<p>{{ kwota | currency:’PLN’ }}</p>

Torzenie własnych Pipes: Możesz również tworzyć własne pipes, jeśli potrzebujesz specyficznej transformacji danych.

Tworzenie pipe:
ng generate pipe nazwa-pipe
Przykład własnego pipe:


import { Pipe, PipeTransform } from '@angular/core’;

@Pipe({

  name: 'mojPipe’

})

export class MojPipe implements PipeTransform {

  transform(value: string): string {

    return value.toUpperCase();

  }

}

10. Stylizacja

Angular Material:
ng add @angular/material
Angular Material oferuje gotowe komponenty UI, takie jak przyciski, formularze, karty.

11. Moduły

Tworzenie modułu:
ng generate module nazwa-modulu

12. Zarządzanie stanem aplikacji

BehaviorSubject:
import { BehaviorSubject } from 'rxjs’;

private stan = new BehaviorSubject<number>(0);

stan$ = this.stan.asObservable();

13. Testowanie

Tworzenie testów jednostkowych: W plikach spec.ts znajdziesz testy jednostkowe generowane automatycznie. Możesz je modyfikować i dodawać własne.

Uruchamianie testów e2e:
  ng e2e

14. Budowanie i wdrażanie aplikacji

ng build –prod

To polecenie optymalizuje i minimalizuje rozmiar aplikacji, aby była gotowa do wdrożenia.

Wdrażanie: Aplikację Angular można wdrożyć na różnych platformach, takich jak Firebase, Netlify, GitHub Pages czy serwer HTTP.

Firebase Hosting:
npm install -g firebase-tools

firebase login

firebase init

firebase deploy