Angular 2 - 模型更改侦听器/ Observable(最佳实践)

时间:2017-03-10 16:47:13

标签: angular service model observable

我有一个组件需要监听模型中可用的属性更改(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();
     }
 }

哪一个更好,为什么?谢谢。

1 个答案:

答案 0 :(得分:0)

你传递回调的原因:

 //service
 onTimeExpired(){
     return model.getTimeExpiredSubject();
 }

订阅不得在服务中,因为该服务可能会在许多组件中使用,因此您必须返回一个observable。

您必须在消费者中订阅,例如组件

// in the component
this.service.subsucribe(data =>{
 // do something
})