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.
Ajouter les actions SELECT & UPDATE qui ont un paramètre de type Todo.
store/actions/todo-list.action.ts
exportnamespaceTodoListModule{exportenumActionTypes{ // [...]SELECT_TODO='[todoList] Select Todo',UPDATE_TODO='[todoList] Update Todo'} // [...]exportclassSelectTodo{readonly type =ActionTypes.SELECT_TODO;constructor(payload:Todo){}}exportclassUpdateTodo{readonly type =ActionTypes.UPDATE_TODO;constructor(payload:Todo){}} // [...]exporttypeActions=InitTodos|SelectTodo|DeleteTodo;}
SelectTodo va récupérer le contenu du payload, et UpdateTodo va changer la todo qui match avec l'id du payload :
/store/reducers/todo-list.reducer.ts
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
Reste la fonctionnalité de UpdateTodo qui sera dans le SelectTodoComponent :