我最近遇到了这样的问题"如何检测服务中的变化,并使其在我的组件中可见"。
我使用DoCheck()解决了它:
DoCheck(){
if( this.componentVar != this.myService.serviceVar){
this.componentVar = this.myService.serviceVar;
}
}
效果很好!但我没有看到它是一个好方法,所以这是我的问题: 你认为这个解决方案是好的吗?
答案 0 :(得分:0)
$ doCheck被视为"观看"替换$ scope手表。我可以看到你的代码将你的组件绑定到服务变量。这是紧密耦合,不建议使用。它也会在每个消化周期运行,这通常会导致性能问题。更好的方法是在组件变量上使用单向绑定。因此,您的组件成为更可重用的转储组件。
var childComponent = {
bindings: { componentVar: '<' },
controller: function () {
this.$onChanges = function (changes) {
if(changes.componentVar){
//do something here
}
};
}
};
angular
.module('app')
.component('childComponent', childComponent);