Soumettez le formulaire de mise à jour
Objectifs de ce chapitre
- ✔️Soumettez le formulaire de mise à jourDécouvrez comment soumettre un formulaire de mise à jour dans une application Angular.
Mettre à jour la tâche avec le TaskService
Le service TaskService inclut déjà une fonction permettant d’ajouter une nouvelle tâche à la liste. Ajoutons une nouvelle fonction pour mettre à jour une tâche existante de la liste.
🎓 Instructions
-
Mettez à jour le fichier
src/app/task-service.ts
.import { Injectable } from '@angular/core';import { Task } from './task.model';@Injectable({providedIn: 'root'})export class TaskService {tasks: Task[] = [{title: 'Tâche 1',description: 'Description de la tâche 1',createdAt: new Date()},{title: 'Tâche 2',description: 'Description de la tâche 2',createdAt: new Date()}];addTask(task: Task) {this.tasks.push({...task,createdAt: new Date()});}getTask(id: string) {return this.tasks.find(task => task.id === id);}updateTask(task: Task) {const index = this.tasks.findIndex(t => t.id === task.id);this.tasks[index] = task;}}
Mettez à jour le TaskFormComponent
Le composant TaskFormComponent est actuellement utilisé pour ajouter une nouvelle tâche à la liste.
Gérez l’action de mise à jour via le formulaire sans créer une nouvelle tâche. Pour ce faire, conservez la même fonction submit mais mettez-la à jour pour utiliser la fonction updateTask du service TaskService.
Quand?
- Si la tâche a un id, appelez la fonction updateTask.
- Si la tâche n’a pas d’id, appelez la fonction addTask.
submit() { const id = this.route.snapshot.paramMap.get('id');
if (id) { const existingTask = this.taskService.getTask(id); this.taskService.updateTask({ ...existingTask, ...this.task }); } else { this.taskService.addTask(this.task); } this.router.navigate(['/']); }
Dans les deux cas, revenez à la liste des tâches.
🎓 Instructions
-
Mettez à jour le fichier
src/app/task-form/task-form.component.ts
.import { Component, OnInit } from '@angular/core';import { ActivatedRoute } from '@angular/router';import { TaskService } from '../task.service';import { Task } from '../task.model';@Component({selector: 'app-task-form',templateUrl: './task-form.component.html',styleUrls: ['./task-form.component.css']})export class TaskFormComponent implements OnInit {task: TaskForm = {title: '',description: ''};constructor(private route: ActivatedRoute,private taskService: TaskService) {}ngOnInit() {const id = this.route.snapshot.paramMap.get('id');if (id) {this.task = this.taskService.getTask(id);}}submit() {const id = this.route.snapshot.paramMap.get('id');if (id) {const existingTask = this.taskService.getTask(id);this.taskService.updateTask({...existingTask,...this.task});} else {this.taskService.addTask(this.task);}this.router.navigate(['/']);}}
Testez-le
- Cliquez sur le bouton
Mettre à jour
à côté d’une tâche dans la liste. - Mettez à jour le formulaire avec les nouveaux détails de la tâche.
- Cliquez sur le bouton
Mettre à jour la tâche
. - La tâche doit être mise à jour dans la liste.
✔️ Ce que vous avez appris
Dans ce chapitre, vous avez appris à mettre à jour TaskFormComponent pour gérer à la fois la mise à jour et la création de tâches.