Bonjour,
Je voudrais faire un composant "explorateur de fichiers" en Angular (2.4 pour le moment).
Le template associée à mon composant est découpé en 2 parties comme habituellement, cad 1 arbre à gauche avec l'arborescence des répertoires et 1 table à droite avec le contenu du répertoire sélectionné.
Aucun problème pour faire ces 2 composants ni pour les assembler au sein du composant Explorer. Là où j'ai un peu plus de mal à voir comment faire les choses proprement c'est pour la partie contrôleur. Par exemple si je double clique sur un répertoire dans la partie de droite, ou je copie/colle un chemin dans un champ texte qui est là pour ça ou encore si je clique sur un répertoire dans l'arbre, ces 3 actions doivent aboutir à la même chose: afficher le contenu du répertoire dans la partie de droite et changer le répertoire courant dans la partie de gauche. Pour ça le moyen le plus logique me semble de créer un évènement métier (du genre CurrentDirectoryChange) qui devra être interprété par... je ne sais pas quoi justement. Il me manque cette partie contrôleur qui pourra s'abonner pour recevoir l'event (à première vue via un Observable) et transmettre l'ordre correspondant au composant Explorer. Le plus simple serait d'abonner le composant Explorer mais ça me gène niveau rôle de chaque classe. En Swing (j'ai fais pas mal de Swing avant) on ne met pas de métier dans un composant graphique. Donc la réaction à un évènement métier (je vais chercher les données, je dis à l'arbre de déplier le nouveau chemin, je mets à jour la table...) ne me semble pas devoir être placée au niveau du composant Explorer.
J'ai bien pensé à faire un service (au sens Angular du terme) mais si je fais ça, je ne vois pas comment il pourrait avoir simplement une référence vers le composant Explorer (et invoquer une méthode pour lui passer ne me semble pas "élégant"). Quelle est la bonne pratique pour régler un cas comme celui là (qui à première vue doit se reproduire au niveau de chaque vue)?
Merci pour vos avis.
Partager