Application Angular simple pour explorer une liste de logements, filtrer par ville et afficher les détails d'un logement, basée sur les données locales de db.json et un petit service HTTP.
Ce projet est basé sur le tutoriel officiel Angular :
- "First App" — https://angular.dev/tutorials/first-app
Le code a été reproduit et adapté à des fins d'apprentissage personnel.
| Vue | Capture |
|---|---|
| Page d'accueil | ![]() |
| Résultats filtrés | ![]() |
| Page de détails | ![]() |
Ce projet montre les bases d'une application Angular moderne :
- Comment structurer une app avec des composants autonomes (standalone components).
- Comment configurer un routeur pour naviguer entre une liste et une page de détails.
- Comment consommer une API REST (ici un serveur JSON local) via un service Angular.
- Comment filtrer une liste en fonction de la saisie de l'utilisateur.
C'est un bon point de départ pour comprendre la structure d'une application Angular 16+ / 17+ avec bootstrapApplication et provideRouter.
- Liste des logements : chargement de tous les logements depuis une API (
http://localhost:3000/locations) via le serviceHousing. - Filtre par ville : filtrage côté client dans le composant
Homeavec un champ texte. - Page de détails : route dynamique
details/:idaffichant les informations détaillées d'un logement. - Formulaire de candidature : formulaire réactif (
ReactiveFormsModule) sur la page de détails, avec soumission simulée en console. - Navigation Angular Router : liens
routerLinkdepuis chaque carte de logement vers la page de détails.
- Source principale :
db.jsonà la racine du projet.- Contient un tableau
locationsavec les attributs :id,name,city,state,photo,availableUnits,wifi,laundry. - Le service
Housingconsomme l'endpointhttp://localhost:3000/locations.
- Contient un tableau
Exemple d'entrée dans db.json :
{
"id": 0,
"name": "Acme Fresh Start Housing",
"city": "Chicago",
"state": "IL",
"photo": "https://...jpg",
"availableUnits": 4,
"wifi": true,
"laundry": true
}Pour servir ces données, le plus simple est d'utiliser json-server.
- Node.js + npm installés.
- (Recommandé) Angular CLI installé globalement :
npm install -g @angular/cliÀ la racine du projet :
npm installDepuis la racine du projet, avec db.json :
npx json-server --watch db.json --port 3000Cela expose l'endpoint :
GET http://localhost:3000/locations
Dans un autre terminal, à la racine du projet :
npm startPuis ouvrir :
-
Bootstrap de l'application
src/main.tsutilisebootstrapApplication(App, { providers: [...] }).- Le routeur est fourni via
provideRouter(routeConfig)avec la configuration définie danssrc/app/routes.ts.
-
Routage
- Chemin
""→ composantHome(page d'accueil avec la liste et la recherche). - Chemin
"details/:id"→ composantDetails(page de détails d'un logement).
- Chemin
-
Service de données
src/app/housing.tsdéfinit le serviceHousing:getAllHousingLocations()récupère tous les logements depuishttp://localhost:3000/locations.getHousingLocationById(id)récupère un logement spécifique parid.submitApplication(...)journalise pour l'instant les données du formulaire dans la console.
-
Page d'accueil (
Home)-
Fichier :
src/app/home/home.ts. -
Au
constructor, le composant appelleHousing.getAllHousingLocations()et stocke les résultats danshousingLocationListetfilteredLocationList. -
La méthode
filterResults(text: string)filtrefilteredLocationListen fonction de la ville :this.filteredLocationList = this.housingLocationList.filter((housingLocation) => housingLocation?.city.toLowerCase().includes(text.toLowerCase()), );
-
-
Carte logement (
HousingLocation)- Fichier :
src/app/housing-location/housing-location.ts. - Composant autonome recevant une entrée
housingLocationet affichant : photo, nom, ville/état et un lien "Learn More" vers/details/:id.
- Fichier :
-
Page de détails (
Details)- Fichier :
src/app/details/details.ts. - Utilise
ActivatedRoutepour lire:iddans l'URL et récupère le logement correspondant via le serviceHousing. - Affiche les informations détaillées et un formulaire réactif pour une candidature.
- Fichier :
- URL de l'API : modifiable dans
src/app/housing.tsvia la propriétéurl. - Styles globaux : dans
src/styles.css. - Styles de composants : dans les fichiers
.cssassociés à chaque composant (app.css,home.css,details.css,housing-location.css, etc.). - Routage : à ajuster dans
src/app/routes.tssi tu ajoutes de nouvelles pages.
src/main.ts— point d'entrée Angular, bootstrap de l'application.src/app/app.ts— composant racine, shell de l'application.src/app/routes.ts— configuration des routes (Home,Details).src/app/housing.ts— serviceHousingpour la récupération des données et la soumission du formulaire.src/app/home/home.ts— composant de la page d'accueil (liste + filtre).src/app/details/details.ts— composant de la page de détails + formulaire réactif.src/app/housing-location/housing-location.ts— composant carte pour un logement individuel.db.json— source de données JSON pourjson-server.


