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 :

Accéder à un index de tableau à l'extérieur de ngFOr


Sujet :

Angular

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut Accéder à un index de tableau à l'extérieur de ngFOr
    C'est encore moi,

    Je cherche à acceder à l'index d'un tableau dans un template mais à l'exterieur ddu ngFor, un peu comme ça :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div *ngFor="let item of items; let indexItem = index">               
    ............................
    </div>
     <div>{{ indexItem }}</div>
    Est-ce possible ? Merci

  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
    ça fait un peu bidouille mais je ne vois pas d'autres façons .
    et je ne sais pas si ça peut fonctionner :

    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
     
    <div *ngFor="let item of items; let indexItem = index">               
    ............................
    {{ myFonction(indexItem) }}
    </div>
     
    <div>{{ index }}</div>
    ...
    ...
    index = 0;
     
     
    myFonction(indexItem) {
       this.index = indexItem;
    }

    tu veux faire ça dans quel but ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    Hello, comment vas-tu depuis hier ? lol

    en fait pour faire simple j'ai une petie appli mobile avec un footer menu comme ceci
    Nom : mobile.PNG
Affichages : 158
Taille : 21,3 Ko

    le fait de cliquer dans l'un des items en bas (il y en a 2 pour l'instant) modifie un message affiché dans le header (ici les 2 messages s'affichent en meme temps)
    Bon je précise que j'ai réussi avec un ngSwitch mais je voulais tester autrement comme ceci :

    dans le html du header

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <div fxLayout="row" fxLayoutAlign="space-around center" class="header">
        <img class="position-logo" src="assets/img/logo.png" alt="">
        <div>
            <!-- mauvais code ! -->
            <div *ngFor="let itemFooterMenu of itemsFooterMenu; let indexItem = index"></div>
            <p>{{ emitMsg(indexItem) }}</p>
        </div>
    </div>

    dans le ts du header, une fonction me permet de récupérer le message du header en fonction de l'index en argument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     emitMsg(indexMsg: number): string {
        return this.itemsFooterMenu.find(x => x.index === indexMsg).message
      }
    pour l'instant j'ai un service en dur qui me fournit tout ça grace à un tableau grace à la propriété "message : chaque ligne contient toutes les propriétés dont j'ai besoin pour générer mon menu et les messages du header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      itemsMenu: any[] = [
        { index: 0, utilRoute: "zone", style: "blue", matIcon: "archive", message: 'affectez un zonage'  },
        { index: 1, utilRoute: "price", style: "blue", matIcon: "euro", message: 'affectez un prix de vente' },
      ];
    Bon c'est juste pr ma culture....

  4. #4
    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
    faut utiliser les bonnes pratiques notamment la communication par service via un observable.

    grossièrement, dans le composant d'en bas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    itemsMenu: any[] = [
        { index: 0, utilRoute: "zone", style: "blue", matIcon: "archive", message: 'affectez un zonage'  },
        { index: 1, utilRoute: "price", style: "blue", matIcon: "euro", message: 'affectez un prix de vente' },
      ];
     
       (click)="onMenu(index)"
    ...
    ...
    onMenu(index) {
       this.myService.obsMenu$.next(this.itemsFooterMenu.find(x => x.index === index).message)
    }

    dans le header
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {{message}}
     
    ...
    message;
     
    ngOnInit() {
    this.myService.obsMenu$.subscribe(message => this.message = message)

    myService
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    public obsMenu$ = new behaviorSubject('');
    ...

  5. #5
    Membre éprouvé
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 503
    Par défaut
    ah oui tu t'abonnes au subject dans chaque item du menu si je comprends bien, il me semblait bien qu'un subject serait une solution

    merci à toi !

  6. #6
    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
    non pas dans chaque item !

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

Discussions similaires

  1. Accéder à l’index d’un élément d’un tableau
    Par Shadowsoul dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2020, 08h32
  2. Accéder à mon index
    Par Matalobos dans le forum Domaines
    Réponses: 1
    Dernier message: 27/08/2008, 13h32
  3. Accéder à l'index d'un label
    Par michel71 dans le forum Langage
    Réponses: 3
    Dernier message: 06/03/2008, 20h15
  4. Accéder à mon serveur web depuis l'extérieur
    Par wisstr dans le forum Hardware
    Réponses: 2
    Dernier message: 22/10/2006, 04h50
  5. tri d'index de tableau par rapport au contenu
    Par parisien dans le forum C
    Réponses: 7
    Dernier message: 13/02/2006, 23h32

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