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 5] Chargement du premier click hostlistener


Sujet :

Angular

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut [Angular 5] Chargement du premier click hostlistener
    Bonjour,

    voici un script qui me pose problème:
    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
    17
    18
    19
    20
    21
    22
    23
     
    <div id="miniMenu">
        <ul id="modePortable">
                <li (click)="upToMenu()" >
                    <div class="bar1"></div>
                    <div class="bar2"></div>
                    <div class="bar3"></div>
                </li>
            <li [appModal]="modal" (click)="modal='contact'">
                tel
            </li>
            <li>croquefarmer.fr</li>
            <li [appModal]="modal"  (click)="modal='lieu'">
                map
            </li>
        </ul>
     
        <ul id="modeEcran">
        <li>contact</li>
            <li>0478787878</li>
        </ul>
     
    </div>

    le but est de récupérer quel lien j'ai cliqué soit contact soit lieu, mon problème est que au premier click le composant m'indique indefined,
    par contre 2 ème clique, il sait où on a cliqué , voici mon component:

    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
     
    import { Directive,ElementRef,HostListener,Input } from '@angular/core';
     
     
    @Directive({
      selector: '[appModal]'
    })
     
     
     
    export class ModalDirective {
     
      @Input('appModal') modal;
     
      @HostListener('click') onClick() {
        console.log(this.modal); // au premier click, il me dit indefinded
       }
     
     
      constructor(private el: ElementRef) { }
     
    }
    Comment dois-je faire correctement la récupération du bon click ?pourquoi j'ai ce comportement ?
    si vous avez une idée, merci d'avance de vos réponse

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Je suis partie sur une autre solution car apparemment il y a un délais d'un événement,
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <div id="miniMenu">
        <ul id="modePortable">
            <li (click)="upToMenu()">
                <div class="bar1"></div>
                <div class="bar2"></div>
                <div class="bar3"></div>
            </li>
            <li [appModal]="modal" (click)="modal='contact'">
                tel
                <div class="boxModal">
                    <div class="closeModal" (click)="modal='close'" >X</div>
                    contact
                </div>
            </li>
            <li>croquefarmer.fr</li>
            <li [appModal]="modal" (click)="modal='lieu'">
                map
                <div class="boxModal">
                    map ...
                </div>
            </li>
        </ul>
     
        <ul id="modeEcran">
            <li>contact</li>
            <li>0478787878</li>
        </ul>
     
        <style>
        .boxModal{
            display:none;
            background:yellow;
        }
        </style>

    le componement

    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
    import { Directive,ElementRef,HostListener,Input,Renderer } from '@angular/core';
     
     
    @Directive({
      selector: '[appModal]'
    })
     
    export class ModalDirective {
     
      @Input('appModal') choix:string;
     
      @HostListener('click') onClick() {
        let part = this.el.nativeElement.querySelector('.boxModal') ;
        if(this.choix == 'close'){
     
          this.renderer.setElementStyle(part, 'display', 'none');
          console.log("fermer le modal");
        }else{
        this.renderer.setElementStyle(part, 'display', 'block');
    }
       }
     
      constructor(private el: ElementRef, private renderer: Renderer) { }
     
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2017
    Messages : 81
    Points : 132
    Points
    132
    Par défaut
    Tu n'utilises pas une modal Material?
    Tu utilises une modal custom?

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Merci de ta réponse, je ne connais pas métarial, je vais me renseigner sur cette vidéo
    https://medium.com/codingthesmartway...s-1ed0c2405f18

    Je souhait quelque chose de simple à utiliser, je ne sais pas si cela vaut le coup pour cacher 2 fenêtres avec du css

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

Discussions similaires

  1. firstchild pas vu au premier click
    Par rvm31 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/02/2016, 20h29
  2. action ne s'execute pas au premier click
    Par yous18 dans le forum JSF
    Réponses: 1
    Dernier message: 28/05/2012, 22h56
  3. Afficher au premier click
    Par cmail dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 13/03/2012, 13h22
  4. Premier click pour afficher, second pour cacher
    Par amirad dans le forum VB.NET
    Réponses: 2
    Dernier message: 24/02/2010, 21h26
  5. Réponses: 11
    Dernier message: 28/11/2006, 13h16

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