2016-06-06 10 views
0

ich eine ShareService in Winkel 2 haben, und in einer anderen Komponente i subscribe das, und das ist mein Code:shareService in Winkel 2 - zweimal zeichnen die nächste Funktion

*******ShareService *********************************** 
    private ShopItem$ = new Subject<any>(); 
ShopItem$_ = this.ShopItem$.asObservable(); 
public addToCart(item : any){ 

    this.ShopItem$.next(item); 

} 

*************in another component********************** 

_shareService.ShopItem$_.subscribe((item) => { 

     alert("hiii"); <====>this functions execute twice 
     this.ADD_TO_CART(item);<====>this functions execute twice 

}); 

mein Problem ist add_to_cart() Funktion ausführen zweimal! warum? ich möchte nicht, dass meine Warenkorbfunktion zweimal ausgeführt wird, wie man dieses Problem repariert ?? der ShareService habe kein Problem ich teste es mit einer Funktion und einmal ausführen.

+0

Haben Sie mehr als eine Instanz einer "anderen Komponente" in Ihrer Anwendung? –

+0

Nein, und das ist das erste Mal, dass ich ein Problem wie dieses habe! Kann es nicht behoben: (( –

+0

Entweder 'ShopItem $ .next()' wird zweimal oder es gibt zwei Abonnenten. –

Antwort

0

Wie in den Kommentaren erläutert, ist dies wahrscheinlich auf mehrere Abonnements zurückzuführen. Um zu überprüfen, es nicht das ist, können Sie einfach über Ihren Abonnements stellen, die folgende Zeile:

console.log('pre subscribe, number of observers is: ', _shareService.ShopItem$_.source.observers.length); 

Hinweis das funktioniert auf rxjs 4, Version 5, die Sie vielleicht eine andere Syntax benötigen.

Es sollte Ihnen 0 geben, wenn Sie einen anderen Wert erhalten, haben Sie ein bereits aktives Abonnement.