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

  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 : 157
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 !

  7. #7
    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
    non pardon, c'est le header du coup qui est abonné et les items qui émetent l'index...les subjects ça me chatouille tjrs un peu les neurones. Bon enfin je regarde, je reviendrai te dire

    C'est Ok! ça marche avec le beahviorSubject !

+ 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