Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Angular]ViewChild

Sujet résolu
    6 août 2020 à 18:28:00

    Bonjour.

    j'ai un système de popup

    <div #popup *ngIf="inscription">I
        @ViewChild('popup') div;
        public inscription:boolean = false;
    
        constructor(private httpClient:HttpClient, private memberService:MemberService) {
        }
        popupColor(count:number){
          if(this.inscription){
            if(this.div.nativeElement.style.backgroundColor== 'green'){
              this.div.nativeElement.style.backgroundColor= '#474749';
            }else{
              this.div.nativeElement.style.backgroundColor= 'green';
            }
          }else if(!this.inscription){
            if(this.div.nativeElement.style.backgroundColor== 'green'){
              this.div.nativeElement.style.backgroundColor= '#474749';
            }else{
              this.div.nativeElement.style.backgroundColor= 'green';
            }
          }
          count++;
    
          if(count<10){
            setTimeout( () => { {this.popupColor(count)} },500)
          }
    
        }


    lorsque je met inscription=false il ne trouve pas la div dans le dom une fois qu'elle apparait (par une function httpclient response qui passe inscription a true). Si je met inscription=true dès le début biensur ca marche.

    ERROR TypeError: this.popup is undefined

    Edit :

    A par julp vous êtes décidément trop lent pour moi xD

    Solution :

        constructor(private httpClient:HttpClient, private memberService:MemberService,private changeDetector : ChangeDetectorRef) {
        }

    appeler cette fonction avant de vouloir agir sur le nouveau dom :

    		    this.changeDetector.detectChanges();

    Résolu.

    -
    Edité par -Crixus- 6 août 2020 à 22:57:26

    • Partager sur Facebook
    • Partager sur Twitter

    "Etre vrai, peu le peuvent."
    Friedrich Nietzsche

      8 août 2020 à 6:30:45

      Bonjour, tu peut passé le sujet en résolu pour qu'il ne reste pas en haut des sujet non résolu dans liste du forum s'il te plait.
      • Partager sur Facebook
      • Partager sur Twitter

      suggestion de présentation.

      [Angular]ViewChild

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown