作者heavenbetula (绿草)
看板Web_Design
标题[问题] Angular的service在路由间触发的问题
时间Wed Dec 26 22:16:35 2018
大家好~小弟是Angular刚接触没多久的新手
最近在使用Service在路由间跳转时遇到一些问题
https://stackblitz.com/edit/angular-w3njbx
↑上面的程式,我在child1 component中订阅了service里的Subject物件,
而在child2 component的按钮按下後,才会接收到触发了,而去做後续行为
这个例子中,我预期的就是按钮每按一次,我就console.log一次,
但是我发现,在路由跳转的过程中,只要child2 component进入一次
就会连同上次的纪录都留着,也就是说:
第一次进入child2 component按下按钮一次,console.log一次(正常)
先按连结离开child2 component
第二次再进入child2 compoent按下按钮一次,console.log直接跳出两次结果
先按连结离开child2 component
第三次再进入child2 component按下按钮一次,console.log直接跳出三次结果
请问为什麽会这样呢?
------------------------------------------------------------------------
首先感谢LoveMoon大的回应~
由於我另外又不知道哪边爬到类似这个问题的解答
以这篇的例子来解说:
this.footerService.service$.subscribe(()=>{
console.log('test');
});
订阅会回传一个Subscription物件
因此可以设一个变数属性来接这个订阅後回传的物件
this.subscription = this.footerService.service$.subscribe(()=>{
console.log('test');
});
然後在订阅service的component(Child2 component),的ngOnDestroy周期中取消订阅
ngOnDestroy(){
this.subscription.unscribe();
}
不知道这方法跟LoveMoon大的差异在哪?
总之都会再找时间好好理解~
※ 编辑: heavenbetula (122.116.61.243), 12/27/2018 21:33:48
※ 编辑: heavenbetula (122.116.61.243), 12/27/2018 21:34:23
1F:→ LoveMoon: 回文有文章,请参考 12/27 22:56