Angular 角度2-模型更改侦听器/可观察(最佳实践)
我有一个组件需要侦听模型中可用的属性更改(剩余时间)。当此变量达到0时,组件将触发一个操作(例如,router.navigate(['/my/path'])) 为此,我的组件订阅了一个主题,每当属性的值发生变化时,就会通知该主题。这是完美的工作 我的问题很简单:这个主题应该在哪里声明?在我的模型中还是在处理我的模型的服务中 例如: 为我服务:Angular 角度2-模型更改侦听器/可观察(最佳实践),angular,service,model,observable,Angular,Service,Model,Observable,我有一个组件需要侦听模型中可用的属性更改(剩余时间)。当此变量达到0时,组件将触发一个操作(例如,router.navigate(['/my/path'])) 为此,我的组件订阅了一个主题,每当属性的值发生变化时,就会通知该主题。这是完美的工作 我的问题很简单:这个主题应该在哪里声明?在我的模型中还是在处理我的模型的服务中 例如: 为我服务: onTimeExpired(model, callback){ model.getTimeExpiredSubject().subscribe
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
})
好啊但在我的例子中,我需要对每个消费者应用特定的逻辑。这就是为什么我决定传递回调并返回订阅,而不是返回主题本身(请参见//我的示例中的一些逻辑)。但是您可以在
subscribe
回调中复制回调代码。