Les action de type ERROR

[Début de la branche step-11]

Dans notre code, on remarque que les actions d'erreurs réalisent la même tâche. Dans ce cas, il n'y a qu'une seule action à définir :

todo-list.action.ts

// [...]
export namespace TodoListModule {

    export enum ActionTypes {
        // [...]
        // ERROR_CREATE_TODO = '[todoList] Error Create Todo',
        // ERROR_UPDATE_TODO = '[todoList] Error Update Todo',
        // ERROR_DELETE_TODO = '[todoList] Error Delete Todo',
        // ERROR_INIT_TODOS = '[todoList] Error Init Todos',
        // Error request Todos
        ERROR_LOAD_ACTION = '[todoList] Error Load Action'
    }

    // [...]
    /*
    export class ErrorInitTodos {
        readonly type = ActionTypes.ERROR_INIT_TODOS;
    }
    // [...]
    /*
    export class ErrorCreateTodo {
        readonly type = ActionTypes.ERROR_CREATE_TODO;
    }
    */
    // [...]
    /*
    export class UpdateTodo {
        readonly type = ActionTypes.UPDATE_TODO;
        constructor(public payload: Todo) {}
    }
    */
    // [...]
    /*
    export class ErrorUpdateTodo {
        readonly type = ActionTypes.ERROR_UPDATE_TODO;
    }
    */

    // [...]

    /*
    export class ErrorDeleteTodo {
        readonly type = ActionTypes.ERROR_DELETE_TODO;
    }
    */

    // ERROR ACTIONS

    export class ErrorLoadAction {
        readonly type = ActionTypes.ERROR_LOAD_ACTION;
    }

    export type Actions = LoadInitTodos
        // [...]
        // | ErrorInitTodos
        // | ErrorCreateTodo
        // | ErrorUpdateTodo
        // | ErrorDeleteTodo

}

todo-list.reducer.ts

todo-list.effect.ts

Système de logs

Une fois le code inutile supprimé, on mettra en place un système de logs avec des toasters afin d'informer l'utilisateur en cas de changement ou d'erreur dans le state. Le catchError peut prendre une erreur Http en argument. On peut donc l'a récupérer pour notre state :

todo-list.effect.ts

todo-list.action.ts

Ajouter une autre propriété logs dans l'interface du state :

models/todo.ts

Ajouter cette propriété dans le reducer :

todo-list.reducer.ts

Créer un sélecteur pour le logs :

todo-list.selector.ts

Installer le module ngx-toastr. Une fois que tout sera installé, aller dans le TodoListComponent :

Le système de logs est maintenant fonctionnel.

Last updated

Was this helpful?