Select & Update Todo

[Début de la branche step-5]

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.

store/actions/todo-list.action.ts

export namespace TodoListModule {
    export enum ActionTypes {
        // [...]
        SELECT_TODO = '[todoList] Select Todo',
        UPDATE_TODO = '[todoList] Update Todo'
    }
    // [...]
    export class SelectTodo {
        readonly type = ActionTypes.SELECT_TODO;
        constructor(payload: Todo){}
    }

    export class UpdateTodo {
        readonly type = ActionTypes.UPDATE_TODO;
        constructor(payload: Todo){}
    }
    // [...]
    export type Actions = 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 :

modules/todo-list/components/select-todo/select-todo.component.ts

Vous pouvez maintenant sélectionner et mettre à jour une todo.

Last updated

Was this helpful?