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 menu navbar conditionnel


Sujet :

Angular

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 53
    Par défaut Angular menu navbar conditionnel
    Bonjour,
    je suis en train d'apprendre Angular, je n'arrive pas à afficher ce menu, seul "Angular Router" s'affiche

    pour mieux comprendre ce que j'essaie de faire :

    il y'a 3 roles : collaborateur, chauffeur, admin

    certains liens ne sont visible que quand on est admin ou chauffeur, les 3 premiers liens sont visibles par tout le monde (collaborateurs)

    listeRoles contient un array de 3 roles , et ils sont bien récupérés correctement


    je pense que le *ngFor n'est peu être pas à la bonne place, j'ai essayé de le mettre dans un li mais ca compile pas,
    là le code tel qu'il est là ça compile mais les liens ne s'affichent pas



    Code HTML : 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
    <nav class="navbar navbar-fixed-top navbar-dark bg-inverse">
      <div class="container">
          <a class="navbar-brand">Angular Router</a>
          <ul class="nav navbar-nav" routerLinkActive="active" *ngFor="let r of listeRoles">
              <li class="nav-item"><a class="nav-link" routerLink="/collaborateur/reservations">Vos réservations</a></li>
              <li class="nav-item"><a class="nav-link" routerLink="/collaborateur/annonces">Vos annonces</a></li>
              <li class="nav-item"><a class="nav-link" routerLink="/collaborateur/statistiques">Statistiques</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_ADMINISTRATEUR'"><a class="nav-link" routerLink="/chauffeur/occupation">Admin Occupation</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_ADMINISTRATEUR'"><a class="nav-link" routerLink="/chauffeur/planning">Admin Planning</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_ADMINISTRATEUR'"><a class="nav-link" routerLink="/admin/chauffeurs">Admin Chauffeurs</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_ADMINISTRATEUR'"><a class="nav-link" routerLink="/admin/vehicules">Admin Véhicules</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_CHAUFFEUR'"><a class="nav-link" routerLink="/chauffeur/occupation">Ch. Occupation</a></li>
              <li class="nav-item" *ngIf="r=='ROLE_CHAUFFEUR'"><a class="nav-link" routerLink="/chauffeur/planning">Ch. Planning</a></li>
          </ul>
      </div>
    </nav>

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2019
    Messages : 707
    Par défaut
    problème :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <ul class="nav navbar-nav" routerLinkActive="active" *ngFor="let r of listeRoles">

    si tu as 5 roles dans listeRoles, alors tu va avoir 5 balises UL de créer !
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul class="nav navbar-nav" routerLinkActive="active">
          <ul class="nav navbar-nav" routerLinkActive="active">
          <ul class="nav navbar-nav" routerLinkActive="active">
          <ul class="nav navbar-nav" routerLinkActive="active">
          <ul class="nav navbar-nav" routerLinkActive="active">

    solution sans ngfor
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <li class="nav-item" *ngIf="hasRole('ROLE_ADMINISTRATEUR')"><a class="nav-link" routerLink="/chauffeur/occupation">Admin Occupation</a></li>

    dans le composant, une fonction hasRole
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    hasRole(role) {
     
      if (listeRoles.indexOf(role) !== -1) {
        return true;
      } 
      return false;
    }

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2017
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 53
    Par défaut
    merci, ca marche !

    par contre les liens sont placés en vertical, je voudrais qu'ils soient placé à l'horizontal
    c'est curieux des fois les ul / li sont à l'horizontale, parfois en vertical, j'ai pas encore compris pourquoi,
    normalement par défaut c'est en vertical en html, par contre sous angular ca apparait parfois à l'horizontale

  4. #4
    Membre expérimenté Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Par défaut
    Salut, assure-toi de bien avoir un ul autour de tes li et vérifie tes classes Bootstrap. Le style horizontal ou vertical peut être adapté avec du CSS.

Discussions similaires

  1. [Bootstrap 4.3] rendu menu navbar
    Par Sebastien31t dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 30/08/2019, 22h24
  2. [CSS 3] Menu Navbar Gauche
    Par navalex3000 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/04/2015, 00h09
  3. Remplir un menu navBar
    Par fmed1900 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/04/2013, 18h24
  4. [XL-2003] Menu deroulant conditionnel
    Par yfchauer dans le forum Excel
    Réponses: 2
    Dernier message: 07/01/2013, 07h02
  5. [Toutes versions] Mise à jour d'un menu déroulant conditionnel
    Par mich2p1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2010, 14h44

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