Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a ShareService in angular 2,and in another component i subscribe that,and this is my code :

*******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

 });

my problem is ADD_TO_CART() function execute twice!why?i dont want my cart function execute twice,how to fix this problem?? the ShareService dont have any problem i test it with an function and once execute.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
208 views
Welcome To Ask or Share your Answers For Others

1 Answer

As discussed in the comments, this is probably due to multiple subscriptions. To verify it is not this, you can put just above your subscriptions, the following line:

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

Note this works on rxjs 4, in version 5 you might need a different syntax.

It should give you 0, if you get another value, you have an already active subscription.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share

548k questions

547k answers

4 comments

86.3k users

...