我有一个组件,需要收听模型中可用的属性更改(时间播放)。当此变量达到0时,组件会触发一个动作(例如,router.navigate(['/my/my/path']))
)为此,我的组件订阅了一个主题,每当属性的价值更改时,就会通知该主题。这很好。
我的问题很简单:应该在哪里宣布这个主题?在我的模型或服务处理我的模型的服务中?
示例:
在我的服务中:
onTimeExpired(model, callback){
model.getTimeExpiredSubject().subscribe(
() => {
// some logic here
callback();
}
}
或
在我的模型中
onTimeExpired(callback){
this.getTimeExpiredSubject().subscribe(
() => {
// some logic here
callback();
}
}
哪一个更好,为什么?谢谢。
为什么要通过回调:
//service
onTimeExpired(){
return model.getTimeExpiredSubject();
}
订阅不得参加服务,因为该服务可以在许多组件中消费,因此您必须返回可观察的。
您必须像组件这样的消费者订阅
// in the component
this.service.subsucribe(data =>{
// do something
})