2017-09-27 1 views
0

Inside Service angulaire j'ai un nombre variable, que je veux observer chaque fois qu'il est mis à jour, je veux mettre cette valeur mise à jour à une autre variable dans un composant différent.BehaviorSubject donne une erreur pour la fonction suivante lorsque j'essaie d'ajouter la variable en utilisant next(). "Je reçois l'erreur this.count.next n'est pas une fonction"

import {BehaviorSubject} from "rxjs/BehaviorSubject"; 
import 'rxjs/Rx'; 

export class DashboardService{ 
    count = new BehaviorSubject<number>(0); 
    count$=this.count.asObservable(); 

    addCount(data){ 
    this.count.next(data); 
    } 
} 

Je reçois l'erreur que j'ai importé eventhough toutes les bibliothèques pertinentes idée .Tout pourquoi je reçois cela? quelqu'un peut-il me dire ce qui se passe avec le code?

} rxJs version 5.4.3 dernière!

+0

ce soit 'Shouldnt comte privé = new BehaviorSubject (0)?' – Pace

+0

@Pace changé en privé, mais toujours la même erreur :( –

+0

pouvez-vous afficher le message d'erreur que vous obtenez –

Répondre

0

Essayez ceci:

export class DashboardService { 
    count = new BehaviorSubject<number>(0); 
    count$ = this.count.asObservable(); 

    public addCount = (data) => { 
     this.count.next(data); 
    } 
} 

Le problème que vous rencontrez est que vous utilisez addCount dans un contexte où this intérieur de la fonction est modifiée (à savoir pointant vers autre chose). L'utilisation de fonctions basées sur lamda dans le typecript garantit que cela ne peut pas arriver. Ce n'est pas une excuse pour toujours les utiliser cependant.

Je vous recommande de lire un peu sur lambda/arrow functions, il pourrait aussi être une bonne idée de regarder dans la façon dont this œuvres dans javascript et à typescript.