IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Angular Discussion :

Angular 2 : Fonctionnalité partagée entre tous les components


Sujet :

Angular

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut Angular 2 : Fonctionnalité partagée entre tous les components
    Bonjour à tous,

    Je m'interroge sur la bonne façon d'afficher un message d'erreur dans mon application quand une requête vers l'API échoue.

    J'ai un service qui me permet de requêter mon api.
    Plusieurs composants (équivalent à des pages dans mon cas) utilise ce service. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    export class StatusComponent implements OnInit {
     
        private api: ApiService;
     
        ngOnInit() {
            this.fetchDatas();
        }
     
        fetchDatas() {
            this.api.getSystemStatus().subscribe(
                datas => {
                    //Traitement des données
     
                },
                error => {
                    let code = parseInt(error.status, 10);
                    if (code == 403) {
                        this.api.clear();
                        this.router.navigateByUrl('/login');
                    } else {
                        console.error("Can't fetch System status : " + error.statusText);
     
    					//Afficher message d'erreur "global"
                    }
     
                }
            );
        }
    }
    J'aimerais donc au niveau de chaque composant pouvoir déclencher l'affichage d'un message d'erreur. Dans l'idéal j'aimerais ne pas avoir un dupliquer un div dans l'html de mes composants qui afficherais le messages.

    Faut il que je créer un composant "MessageErreur" que les autres composant utiliserait ? Y'a t'il d'autre solution plus élégante ? peut être au niveau de app.component ?

    Merci pour vos lumières
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    dans app.component.html on ajoute une balise message d'erreur

    les composants enfants envoient leurs messages via un événement pour remonter à l'app.composant (parent donc).

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Ok donc , il faut passer par un eventEmitter sur mes composants et le app.component recevra l'event.

    Sauf que dans mon cas j'ai un router-outlet dans mon app.component.html et que à priori l'eventEmitter ne remonte pas.

    A priori il faudrait que je passe par un service partagé entre le app.component et mes autres component.

    J'ai bon ou je me complique la vie ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    en effet, si ça se trouve dans le <router-outlet> ça ne remonte pas l'event jusque là.
    donc là, t'es bien obligé d'utiliser un service.

    mais bon rien ne t’empêche de mettre la balise d'erreur à coté du <router-outlet>.

    pour ma part, j'ai fais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <ic-header></ic-header>              // +  menu principal
     
    <err-message></err-message>    // je mettrai ici l'affichage des erreurs ....
     
    <router-outlet></router-outlet>
     
    <ic-footer></ic-footer>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Partage singleton entre tous les noeuds d'un cluster
    Par laruiss dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 12/12/2009, 16h42
  2. Session partagée pour tous les utilisateurs
    Par maniaco_jazz dans le forum Langage
    Réponses: 12
    Dernier message: 19/02/2009, 14h52
  3. Réponses: 2
    Dernier message: 18/06/2007, 12h18
  4. Réponses: 4
    Dernier message: 18/04/2007, 12h52
  5. Tableau partagé entre toutes les sessions
    Par mobscene dans le forum Langage
    Réponses: 1
    Dernier message: 21/12/2006, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo