问题
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.
回答1:
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.
来源:https://stackoverflow.com/questions/37654458/shareservice-in-angular-2-twice-subscribe-the-next-function