Zadanie z modułu Angular. Repozytorium zawiera kod startowy aplikacji Moonbase Control dla tej lekcji.
Rozbuduj formularz zgłaszania incydentu tak, aby poprawnie wprowadzone dane mogły zostać zapisane w backendzie.
W pliku report-incident.html:
- połącz element
<form>zincidentFormza pomocą[formRoot], - dodaj przycisk Angular Material typu
submit, - użyj etykiety
Report incident.
W pliku report-incident.ts:
- rozszerz konfigurację
form()osubmission, - wewnątrz
submissionzdefiniujaction, - pobierz aktualną wartość formularza za pomocą
field().value(), - na podstawie danych formularza utwórz obiekt zgodny z interfejsem
Incident, - pamiętaj o poprawnym typie
severity.
W pliku incidents.service.ts:
- wstrzyknij
HttpClient, - utwórz metodę
createIncident(), - jako argument metody przyjmij obiekt
Incident, - wykonaj request POST wysyłający dane do endpointu
http://localhost:4000/incidents, - poczekaj na zakończenie requestu.
- Po poprawnym zakończeniu requestu wywołaj
reload()istniejącegoincidentsState. - Dzięki temu
httpResourcepowinien ponownie pobrać aktualną listę incydentów.
W komponencie ReportIncident:
- pobierz instancję
IncidentsServiceza pomocąinject(), - w
submission.actionwywołajcreateIncident(), - przekaż do metody przygotowany obiekt
Incident.
- Wprowadź poprawne dane incydentu.
- Wyślij formularz.
- Sprawdź, czy nowy incydent został zapisany w backendzie.
- Sprawdź, czy dane incydentów w aplikacji zostały odświeżone.
💡
FormRootłączy formularz w template z Signal Form,submission.actionobsługuje poprawne wysłanie danych, aIncidentsServiceodpowiada za ich zapis w backendzie.
- Zrób fork tego repozytorium na swoje konto GitHub.
- Sklonuj swój fork na komputer.
- Zainstaluj zależności:
npm install. - Uruchom aplikację:
npm start. - Jeśli zadanie korzysta z danych z API, uruchom w drugim terminalu mock API:
npm run api.
- Zapisz zmiany w commicie i wypchnij je do swojego forka.
- Otwórz Pull Request z forka do repozytorium
mate-academy/angular_forms-submit, do branchamain. - Platforma uruchomi review Twojego Pull Requesta.