2016-06-06 1 views
0

У меня есть ShareService в угловом 2, а в другом компоненте я подписаться, что это мой код:shareService в угловых 2 - дважды подписываться следующей функцией

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

}); 

моя проблема ADD_TO_CART() функция выполнения дважды! почему? Я не хочу, чтобы моя функция телеграммы выполнялась дважды, как исправить эту проблему? У ShareService нет проблем, я тестирую его с помощью функции и выполняю.

+0

У вас есть несколько экземпляров «другого компонента» в вашем приложении? –

+0

Нет, и это первый раз, когда у меня есть такая проблема! Невозможно ее исправить: (( –

+0

Либо 'ShopItem $ .next()' вызывается дважды, либо есть два подписчика. –

ответ

0

Как обсуждалось в комментариях, это, вероятно, связано с несколькими подписками. Для того, чтобы проверить, не это, вы можете поставить чуть выше подписки, следующую строку:

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

Примечание это работает на rxjs 4, в 5-й версии, вам может понадобиться другой синтаксис.

Он должен дать вам 0, если вы получите другое значение, у вас есть уже активная подписка.

Смежные вопросы