Angular 组件中的DoCheck不会检测服务中的更改

Angular 组件中的DoCheck不会检测服务中的更改,angular,service,components,Angular,Service,Components,我最近遇到了“如何检测服务中的更改,并使其在我的组件中可见”的问题 我用DoCheck()解决了这个问题: 而且效果很好!但我没有发现这是一个好方法,所以我的问题是: 您认为这个解决方案好吗?$doCheck被认为是一种“监视”的方式,以取代$scope watch。我可以看到您的代码将组件绑定到服务变量。这是紧密耦合,不建议使用。此外,它在每个摘要周期中运行,这通常会导致性能问题。更好的方法是对组件变量使用单向绑定。因此,您的组件将成为更具可重用性的转储组件 var childComponen

我最近遇到了“如何检测服务中的更改,并使其在我的组件中可见”的问题

我用DoCheck()解决了这个问题:

而且效果很好!但我没有发现这是一个好方法,所以我的问题是:
您认为这个解决方案好吗?

$doCheck被认为是一种“监视”的方式,以取代$scope watch。我可以看到您的代码将组件绑定到服务变量。这是紧密耦合,不建议使用。此外,它在每个摘要周期中运行,这通常会导致性能问题。更好的方法是对组件变量使用单向绑定。因此,您的组件将成为更具可重用性的转储组件

var childComponent={

绑定:{componentVar:'$doCheck被认为是一种“监视”方式替换$scope watch。我可以看到您的代码将组件绑定到服务变量。这是紧密耦合,不推荐使用。此外,它在每个摘要周期运行,这通常会导致性能问题。更好的方法是对组件变量使用单向绑定。因此,您的组件将成为更可重用的转储组件

var childComponent={

绑定:{componentVar:'客户可能更容易订阅服务上的可观察到的内容,并从中推动更改或比较。DoCheck被称为一个很大的例子。请参阅以这种方式挂钩的缺点,客户可能更容易订阅服务上的可观察到的内容,并从中推动更改或比较。DoCheck是调用了很多。请参阅以这种方式挂接的缺点。确保您的代码段实际运行时包含适当的角度版本和其他所需内容。否则,将其转换为普通代码块。确保您的代码段实际运行时包含适当的角度版本和其他所需内容。否则,将其转换为普通代码块。
DoCheck(){
    if( this.componentVar != this.myService.serviceVar){
         this.componentVar = this.myService.serviceVar;
    }
}