Professional Documents
Culture Documents
Angular - Podstawy
Angular - Podstawy
Laboratorium 3
Framework Angular - podstawy
Aleksander Ferens
Zadania do wykonania
Utwórz oraz uruchom aplikację typu Hello World, używając frameworka Angular.
> node -v
> npm -v
2. Instalujemy CLI Angulara poprzez NPM lub inny menedżer pakietów (np. Yarn) i
tworzymy nową aplikację za jego pomocą (ng new). Wybieramy wersję bez
rou ngu oraz wybrany przez nas format arkuszy stylów.
flaga -g w NPM instaluje pakiet globalnie, przez co wystarczy zainstalować CLI jednorazowo
> npm install -g @angular/cli
> ng new <nazwa-naszej-aplikacji>
src/app:
główny folder naszej aplikacji, tutaj piszemy kod źródłowy
src/assets:
obrazki, dokumenty lub inne pliki statyczne
src/environments:
konfiguracja aplikacji
src/index.html
główna strona, która zostanie wysłana, gdy ktoś odwiedzi
stronę: zwykle nie ma potrzeby edytować tego pliku
src/styles.css
style globalne dla całego projektu
Zadanie 1
Utwórz nowy komponent, który będzie wypisywał na ekranie nagłówek (np.
Witaj na mojej stronie). Wyświetl przykładowe pole z klasy komponentu zamiast
statycznego tekstu.
@Component({
selector: 'app-hello',
// znacznik, którym możemy zadeklarować nasz komponent w pliku HTML
templateUrl: './hello.component.html',
// nazwa pliku z szablonem HTML
styleUrls: ['./hello.component.css']
// nazwy arkusza stylów
})
export class HelloComponent implements OnInit {
constructor() { }
ngOnInit(): void { }
}
Technologie Programistyczne - Systemy Internetowe
Jeżeli typ pola jest możliwy do wywnioskowania z jego zawartości, nie musimy go
podawać (poniższa składnia jest również prawidłowa):
Zadanie 2
Dodaj element typu input, który będzie podpięty bezpośrednio pod zmienną w
celu personalizacji imienia użytkownika w nagłówku (np. Witaj na mojej stronie,
Marek)
app.module.ts:
1. importujemy moduł:
import { FormsModule } from '@angular/forms';
2. dodajemy go w tablicy:
imports: [
BrowserModule,
FormsModule
],
Zadanie 3
Dodaj prosty licznik (przyciski zwiększający o 1 (+) i zmniejszający o 1 (-) ).
z klasy do widoku,
{{ }} {{ zmienna }}
wypisanie wartości
z klasy do widoku,
[] [value] = “zmienna” powiązanie własności
HTML
z widoku do klasy,
() (click) = “funkcja()”
powiązanie zdarzenia
powiązanie
[( )] [(ngModel)] = “zmienna”
dwukierunkowe
Technologie Programistyczne - Systemy Internetowe
Zadanie 4
Utwórz prostą listę rzeczy do zrobienia w nowym komponencie (jedynie
wyświetlanie danych) i dodaj ją do strony głównej (użyj dyrektywy *ngFor)
Zadanie 5
Rozbuduj komponent, aby zaimplementować dodawanie elementu do listy.
Możemy dodać element poprzez użycie zdarzenia click oraz dyrektywy ngModel:
<input type="text" [(ngModel)]="todoItem">
<button (click)="addItem()">Dodaj</button>
Zadanie 6
Rozbuduj komponent, aby zaimplementować usuwanie elementu z listy.
Jeżeli indeks będzie równy -1, to znaczy, że elementu nie ma w naszej tablicy.
Powyższy zapis funkcji anonimowej: obj => obj.id == id, skraca nam zapis poniższej
funkcji:
function(obj) {
return (obj.id == id);
}
Zadanie 7
Rozbuduj komponent w taki sposób, aby przy próbie dodania do listy takiego
samego zadania, jak jedno z już dodanych zadań, wyświetlał się odpowiedni
komunikat i element nie był dodawany.
Przy dodawaniu elementu należy sprawdzić, czy dany element już nie istnieje w
podanej tablicy. Po lekkim przekształceniu możemy użyć ponownie metody
.findIndex():
Aby wyświetlić komunikat, możemy użyć dyrektywy *ngIf - jeżeli zmienna ma wartość
true, to element HTML wyświetli się na stronie.
<div id="error" *ngIf="errorBoolean">
Element już istnieje!!
</div>
// ...
todoItem = "";
errorBoolean = false;
// ...
addItem() {
const index = this.items.findIndex(obj => obj.name == this.todoItem );
if(index !== -1) {
this.errorBoolean = true;
return; // wychodzimy z metody, pomijając resztę kodu
}
this.todoItem = "";
this.errorBoolean = false;
}
Technologie Programistyczne - Systemy Internetowe
wskazówki: