我有一个组件需要监听模型中可用的属性更改(timeRemaining)。当此变量达到0时,组件会触发一个操作(例如,router.navigate(['/ my / path']))
为此,我的组件订阅了一个Subject,只要该属性的值发生变化,它就会被通知。这很完美。
我的问题很简单:这个主题应该在哪里宣布?在我的模型中或在处理我的模型的服务中?
示例:
在我的服务中:
onTimeExpired(model, callback){
model.getTimeExpiredSubject().subscribe(
() => {
// some logic here
callback();
}
}
OR
在我的模特中
onTimeExpired(callback){
this.getTimeExpiredSubject().subscribe(
() => {
// some logic here
callback();
}
}
哪一个更好,为什么?谢谢。
答案 0 :(得分:0)
你传递回调的原因:
//service
onTimeExpired(){
return model.getTimeExpiredSubject();
}
订阅不得在服务中,因为该服务可能会在许多组件中使用,因此您必须返回一个observable。
您必须在消费者中订阅,例如组件
// in the component
this.service.subsucribe(data =>{
// do something
})