2016-10-21 6 views
1

単純なタイマーを作ろうとしましたが、ある程度ifの条件で打ち切る必要があります。しかし、いつもエラーEXCEPTION: timer.unsubscribe is not a functionがあります。timer.unsubscribeは関数ではありませんAngular2

私は間違っていますか?

let timer:any = Observable.timer(0,1000); 
    timer.subscribe(data => { 
      console.log(this.itemsRatedList); 
      if(data == 5) timer.unsubscribe(); 
     }); 

答えて

5

それは次のようになります。

let timer:any = Observable.timer(0,1000); 
let subscription = timer.subscribe(data => { 
    console.log(this.itemsRatedList); 
    if(data == 5) 
    subscription.unsubscribe(); 
}); 

することはできませんunsubscribeObservable、唯一Subscription

Plunker example

+0

ワウ...だから私のことを考えると:) :)ありがとう! –

1

より明確かつ簡単な例では、私はより明確であると思いますが、これはこの例を試しています。

import { Component, OnInit, OnDestroy } from '@angular/core'; 
import { Observable } from 'rxjs/Rx'; 

@Component({ 
    selector: 'app-slider', 
    templateUrl: './slider.component.html', 
    styleUrls: ['./slider.component.css'] 
}) 


export class SliderComponent implements OnInit , AfterViewInit, OnDestroy { 

    Sliders: any; 
    timer: any; 
    subscription: any; 


constructor() { } 

ngOnInit() { 

    // after 3000 milliseconds the slider starts 
    // and every 4000 miliseconds the slider is gona loops 

    this.timer = Observable.timer(3000, 4000); 

    function showSlides() { 
    console.log('Test'); 
    } 

    // This is the trick 
    this.subscription = this.timer.subscribe(showSlides); 

} 

    // After the user live the page 
    ngOnDestroy() { 
    console.log('timer destroyd'); 
    this.subscription.unsubscribe(); 
    } 


} 
関連する問題