2017-07-05 11 views
1

mouseenterイベントでインターバルを開始する必要があり、マウスを離して停止する必要があります。clearInterval()が機能していません

「てclearInterval」は、正常に動作している間に「のsetIntervalは」「マウスダウン」イベント

demo.tsによって開始されたときに「のsetIntervalは」「のMouseEnter」イベントによって開始された区間を停止されていない

interval_bs:any; 
    startInterval(){  
    this.interval_bs=setInterval(()=>{ 
     if(this.activeIndex<3){ 
     this.activeIndex+=1; 
     } 
     else{ 
     this.activeIndex=0; 
     }  
    },2000) 
    } 

    stopInterval(){ 
    clearInterval(this.interval_bs); 
    } 

demo.html

<div (mouseenter)="startInterval()" (mouseleave)="stopInterval()" >  
     <ng-template ngFor let-bs [ngForOf]="back_screens" let-bsi="index" > 
     <img [src]="bs.image" *ngIf="activeIndex==bsi" > 
     </ng-template> 
</div> 
+1

に条件を適用 '多分機能がされていません)(' stopInterval内にconsole.logを置きますすべて –

+0

でそれをチェックしました。それは – Mubashir

+0

と呼ばれています。両方のメソッドに 'console.log(this)'を追加すると、何が印刷されますか? –

答えて

2

今、問題が解決されました。変数 'start_count'を宣言し、ゼロに初期化します。 '(mouseleave)'イベントで、 'start_count'をゼロにリセットします。 は今すぐに「(MouseEnterイベント)」イベント「をSTART_COUNT」を増やすと「のsetInterval()」メソッド

interval_bs:any; 
start_count:number=0; 
startInterval(){ 
    this.start_count+=1; 
    if(this.start_count==1){ 
     this.interval_bs=setInterval(()=>{ 
     if(this.activeIndex<3){ 
      this.activeIndex+=1; 
     } 
     else{ 
      this.activeIndex=0; 
     }   
     },2000)  
    } 

    } 

    stopInterval(){ 
    this.start_count=0; 
    clearInterval(this.interval_bs); 
    } 
+0

自己回答、良いもの:p –

+0

:) @PardeepJain – Mubashir

関連する問題