20-1 Composant d'affichage des issues sur la page d'un projet
Pour afficher les issues de projet, on créera un composant acceptant en entrée (@Input()) un identifiant de projet.
-
Créer le composant
issues-listviaAngular CLI**dans son propre dossier defeature. En effet, on parle d'une fonctionnalité distincte liée aux issues. Bien sûr que le tout est dans le contexte de projets, mais il s'agit d'une fonctionnalité distincte.ng g component features/issues/components/issues-listeinfoLes dossiers manquants seront créés automatiquement pour vous 🙂
-
Ajouter le
Input()pour le id de projet (projetId).src/app/features/issues/components/issues-liste.tsexport class IssuesListe {
@Input() projetId: string | null = null;
} -
Modifier le contenu du composant afin d'afficher temporairement simplement l'identifiant du projet.
src/app/features/issues/components/issues-liste.ts@Component({
selector: 'app-issues-liste',
imports: [],
template: `
<h2>Issues</h2>
<p>La liste des issues pour le projet {{projetId}} sera affichée ici.</p>
`,
styles: ``
})
export class IssuesListe {
@Input() projetId: number | null = null;
} -
Préparer le terrain pour l'initialisation avec
OnInitexport class IssuesListe implements OnInit {
@Input() projetId: number | null = null;
async ngOnInit() {
// Initialisation, ex.: appeler un service `IssueService` pour récupérer les issues du projet
}
}attentionDans un cas réel, on appelerait un service comme
IssueServicepour récupérer la liste des issues associées au projet. -
Intégrer
issues-listedansprojet-detail.src/app/features/projets/pages/projet-detail.ts@Component({
selector: 'app-projet-detail',
imports: [
RouterLink,
IssuesListe
],
template: `
@if (projet) {
<div class="row">
<div class="col-lg-8">
<h1>{{projet.nom}}</h1>
</div>
<div class="col-lg-4 d-flex align-items-center justify-content-lg-end">
<a class="btn btn-secondary" [routerLink]="['/projets', projet.id, 'modifier']">Modifier</a>
</div>
</div>
<div class="row mt-3">
<div class="col">
<p>{{projet.description}}</p>
</div>
</div>
<div class="row mt-3">
<div class="col">
<app-issues-liste [projetId]="projet.id"></app-issues-liste>
</div>
</div>
}
`,
styles: ``
})
Vous devriez maintenant avoir quelque chose comme ceci lorsque vous vous rendez sur la page de détail d'un projet:
