Rajouter une propriété dans notre TodoListState afin de conserver une todo, ce qui permettra la mise à jour de celle-ci.
Cela implique de modifier l'interface, les actions et le reducer.
models/todo.ts
export interface TodoListState {
// [...]
selectTodo: Todo
}
Ajouter les actions SELECT & UPDATE qui ont un paramètre de type Todo.
Une fonction sera rattachée à l'événement au clique d'une todo.
Celle-ci redirigera l'utilisateur vers la page /select-todo tout en modifiant le state selectTodo :
all-todos.ts
// [...]
import { Router } from '@angular/router';
@Component({
selector: 'app-all-todos',
styleUrls: ['./all-todos.component.scss'],
template: `
<!-- reste -->
<ul>
<li *ngFor="let todo of todos$ | async; let i = index" >
<!-- reste -->
<button (click)="selectTodo(todo)">Modifier</button>
</li>
</ul>
`
})
export class AllTodosComponent implements OnInit {
// [...]
constructor(
// [...]
private router: Router) {
// [...]
}
// [...]
selectTodo(todo) {
this.store.dispatch(new TodoListModule.SelectTodo(todo));
this.router.navigate(['/todo-list/select-todo']);
}
// [...]
}
Reste la fonctionnalité de UpdateTodo qui sera dans le SelectTodoComponent :