Angular 2-模型更改听众 /可观察的(最佳实践)



我有一个组件,需要收听模型中可用的属性更改(时间播放)。当此变量达到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
})

最新更新