Je suis en train de résilier votre abonnement à un Observable et je vois l'erreur suivante:subscription.subscribe et désabonnement n'est pas une fonction
[ts] Property 'unsubscribe' does not exist on type 'Observable<number>'. Did you mean 'subscribe'?
Cette erreur est liée au code: this.subscription.unsubscribe();
Voici le fichier entier:
import { Component, Input, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { IntervalObservable } from 'rxjs/observable/IntervalObservable';
import 'rxjs/add/observable/interval';
import 'rxjs/add/observable/timer';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.sass']
})
export class AppComponent implements OnInit {
public counting: boolean;
public triggerBtnText = 'GO!';
public subscription: Observable<number>;
@Input() count = 0;
constructor() {}
ngOnInit() {
this.counting = false;
}
toggleStopwatch(): any {
if (this.counting === false) {
this.counting = true;
this.triggerBtnText = 'STOP';
this.updateCount()
} else {
this.counting = false;
this.triggerBtnText = 'GO!';
this.subscription.unsubscribe();
}
}
updateCount() {
this.subscription = Observable.interval(1000);
this.subscription.subscribe(this.counter);
}
public counter(value) {
this.count = value;
console.log(value);
}
resetCount() {
this.count = 0;
}
}
ici un projet simple où il peut être teste d:https://bitbucket.org/wtkd/learning-rxjs/branch/moving-to-ng
Affichez la trace exacte et complète de la pile d'exceptions. Mais l'abonnement, que vous avez choisi de taper comme n'importe lequel, éliminant ainsi toutes les vérifications de type que ferait TypeScript pour vous, n'est PAS un abonnement. C'est un observable. Et il n'y a pas de méthode de désinscription dans Observable. N'utilise pas. Donnez le type approprié à vos variables, et TypeScript détectera vos erreurs de programmation pour vous, au moment de la construction. C'est tout le point de TypeScript. –
Je ne me souviens pas exactement mais il y avait quelque chose de bizarre avec Observable.interval et Angular ayant besoin d'utiliser 'import {IntervalObservable} de 'rxjs/observable/IntervalObservable';' – rjustin
@JBNizet trace de pile ajouté, ty pour les astuces de tapuscrit, savez-vous comment pourrais-je faire observer ces observables? –